我是java新手,我正在阅读java nio教程,可以解释什么是阻塞模式。 在教程中我读了 - 'FileChannel不能设置为非阻塞模式。它始终在阻塞模式下运行'java中的阻塞模式是什么
回答
阻塞模式意味着当前线程无法向前进展,直到I/O操作成功或失败。在非阻塞模式下,如果操作无法立即前进,控制权将返回给线程,以便稍后再次尝试操作。
从历史上看,只有在阻塞模式下才能提供“快速”I/O,如访问磁盘。两种模式都提供“慢”I/O,例如等待网络响应的操作。
它是“稍后再次尝试操作”还是“操作在background_中发生”,并且线程可以检查其状态或通过回调主动通知成功? –
@BoristheSpider他们真的相当。如果某些操作发生在后台,那么您将不得不尝试稍后获取结果的操作。如果您稍后可以尝试操作并获得不同的结果,则稍后尝试更改结果时,后台会发生一些操作。 –
@Boris蜘蛛:*两个*。当操作意味着“返回缓冲区的当前内容”,然后再次成功尝试它意味着缓冲区在后台被同时填充......在NIO中,使用非阻塞的'SelectableChannel'意味着您可以使用'选择器“来监视后台传输的进度。相比之下,'AsynchronousFileChannel'允许您使用回调,但这是一种与非阻塞通道不同的异步传输。 – Holger
- 1. 阻塞模式的原理是什么?
- 2. 为什么select()始终在非阻塞模式下被阻塞
- 3. Python:为什么recv()在阻塞模式下没有阻塞?
- 4. BlockingQueue阻塞的方式是什么?
- 5. load_balanced_mode()中的IPython.parallel中的阻塞和非阻塞模式有什么区别?
- 6. 为什么在python中阻塞模式不会阻塞recv函数
- 7. 为什么Java中的FileChannel不是非阻塞的?
- 8. Java中的阻塞队列的优点是什么?
- 9. Java中的非阻塞CAS是否真的非阻塞?
- 10. PHP流中的阻塞和非阻塞模式
- 11. 什么是“模拟阻塞”(在tomcat doc中可以看到)?
- 12. NIO非阻塞模式
- 13. “帧阻塞”是什么意思?
- 14. 互斥锁:“阻塞”是什么意思?
- 15. 确定什么是阻塞UI线程
- 16. 什么是非阻塞信号量?
- 17. 什么是使对象的非阻塞版本的Pythonic方式?
- 18. 为什么ioctl()不阻塞?
- 19. 为什么concurrent_queue非阻塞?
- 20. 什么时候FileInputStream.read()阻塞?
- 21. Java中的阻塞队列
- 22. 是renderer.render()阻塞还是非阻塞?
- 23. 什么是简单的话阻止IO和非阻塞IO?
- 24. 阻塞和非阻塞读取之间有什么区别?
- 25. Java中的gRPC - 阻塞/非阻塞存根
- 26. 非阻塞UDP I/O vs阻塞Java中的UDP I/O
- 27. 如何切换socketchannel的阻塞模式?
- 28. 阻塞线程 - Java
- 29. Java线程阻塞
- 30. Java线程阻塞
IO读/写是否阻塞当前进程或异步发生。 –
http://docs.oracle.com/javase/8/docs/api/java/nio/channels/SelectableChannel.html#bm – Holger
我投票结束这个问题作为题外话,因为它不是关于编程。 –