具体来说,问题在于编写这样一个方法:
int maybeRead(InputStream in, long timeout)
如果数据在‘ timeout’毫秒内可用,返回值与 in.read ()相同,否则返回 -2。在方法返回之前,任何衍生线程都必须退出。
为了避免争论,这里的主题 java.io。由 Sun (任何 Java 版本)记录的 InputStream。请注意,这并不像看起来那么简单。以下是 Sun 的文档直接支持的一些事实。
Read ()方法可以是不可中断的。
将 InputStream 包装在 Reader 或 InterruptibleChannel 中没有任何帮助,因为这些类只能调用 InputStream 的方法。如果可以使用这些类,就有可能编写一个解决方案,直接在 InputStream 上执行相同的逻辑。
In.able ()返回0总是可以接受的。
Close ()方法可能会阻塞或什么也不做。
没有一般的方法可以杀死另一个线程。