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