簡體   English   中英

Java NIO 為什么 Selector 必須在非阻塞模式下與 Channel 一起工作?

[英]Java NIO why Selector has to work with Channel in non-blocking mode?

根據這一段,IO Multiplexing 可以在阻塞和非阻塞模式下與文件描述符一起工作: 在此處輸入圖片說明

而非阻塞模式只需要配合邊沿觸發模式: 在此處輸入圖片說明

更重要的是,根據這個答案,Java NIO 在杠桿觸發模式下工作。

那么為什么 Java NIO Selector 要求通道處於非阻塞模式: 在此處輸入圖片說明

感謝您提前回復。

java.nioChannel的強大之處在於您可以以非阻塞方式監視多個套接字。 換句話說,傳統的java.io是一種具有阻塞 IO 調用single-thread / single-socket方法,而java.nio的用途是在不需要數千個套接字連接的情況下生成數千個套接字連接(通過通道和選擇器)線程。 這里選擇器的工作是幫助你的線程/線程池從准備好和連接的通道中讀取和寫入。

頻道的 Java 文檔將其定義為,

定義通道,表示與能夠執行 I/O 操作的實體的連接,例如文件和套接字; 定義選擇器,用於多路復用、非阻塞 I/O 操作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM