我是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. Scala中的非阻塞和阻塞未來是什麼?
- 7. 什麼是阻塞功能?
- 8. 阻塞fsockopen是什麼?
- 9. 爲什麼在python中阻塞模式不會阻塞recv函數
- 10. 爲什麼Java中的FileChannel不是非阻塞的?
- 11. Java中的阻塞隊列的優點是什麼?
- 12. 將OpenSSL BIO從阻塞模式更改爲非阻塞模式
- 13. Java中的非阻塞CAS是否真的非阻塞?
- 14. 阻塞信號的行爲是什麼?
- 15. PHP流中的阻塞和非阻塞模式
- 16. 什麼是「模擬阻塞」(在tomcat doc中可以看到)?
- 17. 我不知道爲什麼我的QThread模式阻塞
- 18. 在java中阻塞
- 19. 什麼是Java synchronized(Object obj)真的阻塞?
- 20. 互斥鎖:「阻塞」是什麼意思?
- 21. 「幀阻塞」是什麼意思?
- 22. 什麼是非阻塞信號量?
- 23. 什麼是非阻塞生成器
- 24. 確定什麼是阻塞UI線程
- 25. DatagramChannel,阻塞模式和cpu
- 26. NIO非阻塞模式
- 27. 插座阻塞模式
- 28. 什麼是使對象的非阻塞版本的Pythonic方式?
- 29. 什麼時候FileInputStream.read()阻塞?
- 30. 爲什麼concurrent_queue非阻塞?
IO讀/寫是否阻塞當前進程或異步發生。 –
http://docs.oracle.com/javase/8/docs/api/java/nio/channels/SelectableChannel.html#bm – Holger
我投票結束這個問題作爲題外話,因爲它不是關於編程。 –