为了账号安全,请及时绑定邮箱和手机立即绑定

是否可以通过超时从InputStream读取?

是否可以通过超时从InputStream读取?

梵蒂冈之花 2019-06-21 15:13:21
是否可以通过超时从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()方法可能阻塞或不做任何操作。没有一般的方法来杀死另一个线程。
查看完整描述

3 回答

?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

我会质疑问题陈述,而不是盲目地接受它。您只需要从控制台或网络中超时。如果后者你有Socket.setSoTimeout()HttpURLConnection.setReadTimeout()只要您在构造/获取它们时正确地设置了它们,这两种方法都可以完成所需的任务。把它留给应用程序后面的任意点,而您所拥有的只是InputStream的糟糕设计,导致了非常尴尬的实现。


查看完整回答
反对 回复 2019-06-21
  • 3 回答
  • 0 关注
  • 1186 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号