题
我有这样的Java代码: 通用标签
问题是我在Run()方法中有一个write()阻塞,所以我添加了一个 一个检查连接是否正在传输的新线程:如果没有传输,我想使用异常机制(从检查线程向另一个线程的run()方法抛出异常)来停止阻塞的write()。 有可能吗?
编辑[已解决]:
唯一的方法是残酷地关闭输出流并处理写入的位数,以检查连接是否正在传输: 通用标签
解决方案
通常,在阻塞I / O的情况下,继续前进的唯一方法是关闭资源。正如@VolkerK所说,另一种方法是使用非阻塞I / O,这比较困难。
其他提示
您可以进行代码荣誉Thread.interrupt()
调用。请参阅此调用的javadoc。
并非完全符合您的要求,而是使用 java.nio 和
public abstract int select(long timeout) throws IOException
(不仅)检测超时。
我建议为此使用中断。Checker可能会在Uploader类上调用中断。
例如 通用标签
文档在这里: http://docs.oracle.com/javase / tutorial / essential / concurrency / interrupt.html
不隶属于 StackOverflow