相关疑难解决方法(0)

是否可以从具有超时的InputStream读取?

具体来说,问题是写一个这样的方法:

int maybeRead(InputStream in, long timeout)
Run Code Online (Sandbox Code Playgroud)

如果数据在'timeout'毫秒内可用,则返回值与in.read()相同,否则为-2.在方法返回之前,任何生成的线程都必须退出.

为了避免参数,这里的主题是java.io.InputStream,由Sun(任何Java版本)记录.请注意,这并不像看起来那么简单.以下是Sun的文档直接支持的一些事实.

  1. in.read()方法可能是不可中断的.

  2. 将InputStream包装在Reader或InterruptibleChannel中没有帮助,因为所有这些类都可以调用InputStream的方法.如果可以使用这些类,则可以编写一个直接在InputStream上执行相同逻辑的解决方案.

  3. in.available()返回0总是可以接受的.

  4. in.close()方法可能会阻塞或不执行任何操作.

  5. 没有通用的方法来杀死另一个线程.

java timeout inputstream

142
推荐指数
7
解决办法
13万
查看次数

标签 统计

inputstream ×1

java ×1

timeout ×1