有什么方法可以使用java.nio。*在不关闭套接字的情况下中断InputStream#read()?
如果在读取过程中中断了InterruptibleChannel,它将被关闭并抛出ClosedByInterruptException。如果您只想读取超时,请不要使用任何通道,而只需使用常规的Socket;用较短的超时调用Socket.setSoTimeout(),并在每次超时触发时检查线程的isInterrupted()状态。更好的是,查看中断线程的要求。那个有什么用途?
解决方法您是否知道在InputStream不关闭关联套接字的情况下中断Java读取的方法?
这是获取套接字输入流并转换为可中断的DataInputStream的当前构造策略:
InputStream interruptibleInputStream = Channels.newInputStream(Channels.newChannel(m_ConnectionData.getSocket().getInputStream()));DataInputStream myInterruptibleDIS = new DataInputStream(interruptibleInputStream);
这利用ReadableByteChannel提供了read(ByteBuffer)对ClosedByInterruptExceptionthrowable的支持的方法的a。
问题在于,在线程上调用中断再在原因read()上调用DataInputStream会导致底层套接字被关闭。
就我而言,我需要使套接字保持打开状态。该read呼叫正在等待即将到来的用户输入,因此我正在使用中断将控制权传递回更高的组件,然后最终read再次返回。
如果有人可以提出一种使用JDK内置类实现此目标的方法,或者指出某些信息是不可能的,我将不胜感激。
我知道还有其他方法可以达到相同的效果,但是我很想知道这种方法是否可行。
相关文章:
1. javascript - 如何判断用户切换到了当前标签页?2. 数据库 - mysql中怎样修改带点的字段名的位置?3. javascript - 在一些视频为主的h5页面中,是怎么做到获取视频缓冲进度或者说如何对video视频做预加载的4. datetime - Python如何获取当前时间5. mysql中 when then 的优化6. mysql主从 - 请教下mysql 主动-被动模式的双主配置 和 主从配置在应用上有什么区别?7. javascript - artTemplate 模板引擎,从后台获取到的数据就是html代码如何渲染到页面8. javascript - 使用ionic建立start一个项目的时候,总是失败。9. javascript - 在nodejs的程序里面怎么理解IO呢,如何用一段代码来说明IO10. javascript - 为什么!function foo(){}返回false,!function foo(){}()返回true?

网公网安备