我有这样的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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top