java nio 阻塞_Java NIO和传统阻塞IO
傳統的阻塞IO我就不多說,因為之前我發過幾篇使用傳統阻塞IO做QQ聊天寫的幾篇文章,服務器端每得到一個新的連接就開一個線程,在這個線程中接收數據方向是阻塞的,??
這種方式對性能的開銷是非常大的,總結來說如果連接的數量非常多,并且每個連接發送的數據非常少的情況,不要使用傳統阻塞IO,推薦使用Java
NIO模式?
傳統的阻塞IO適用于連接的數量非常少,且傳輸的數據量非常大情況,這種可以考慮使用傳統的阻塞IO??
JDK的無阻塞I/O有效解決多線程服務器線程開銷問題,但在使用上略顯得復雜一些。在NIO中使用多線程,主要目的已不是為了應對
每個客戶端請求而分配獨立的服務線程,而是通過多線程充分使用用多個CPU的處理能力和處理中的等待時間,達到提高服務能力的目的。??
Java NIO 中select()阻塞,等待有事件發生喚醒?
Java NIO
中,一般ServerSocketChannel只注冊accept事件,對于read和write事件是注冊到accept的SocketChannel中的?
所謂異步輸入輸出機制,是指在進行輸入輸出處理時,不必等到輸入輸出處理完畢才返回。所以異步的同義語是非阻塞(None
Blocking)。?
通道介紹:這里主要介紹ServerSocketChannel和
SocketChannel.它們都是可選擇的(selectable)通道,分別可以工作在同步和異步兩種方式下(注意,這里的可選擇不是指可以選擇兩種工作方式,而是指可以有選擇的注冊自己感興趣的事件)。可以用channel.configureBlocking(Boolean
)來設置其工作方式。與以前版本的API相比較,ServerSocketChannel就相當于ServerSocket(ServerSocketChannel封裝了ServerSocket),而SocketChannel就相當于Socket(SocketChannel封裝了Socket)。
FR:徐海濤(Hunk Xu)
總結
以上是生活随笔為你收集整理的java nio 阻塞_Java NIO和传统阻塞IO的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 屋内房顶出现蚂蚁怎么处理?
- 下一篇: 求推荐,适合100平米房子使用的比较节能