【NIO】Buffer、Channel、Selector 關係小結
前言:
檔案IO:
- BIO:讀/寫(人) --> 檔案(終點)
- NIO:讀/寫(人) --> Buffer(車) ==> Channel(高速路) --> 檔案(終點)
=> TPR模式:一個連線對應一個執行緒
- –> TRP模型的根本原因是執行緒會出現阻塞
- –> 阻塞的原因是不確定性,即該連線要佔用該執行緒多久,那麼就會傻傻等待客戶端的指令(注:實際的讀寫時間很短,可以忽略不計)
==> 那可不可以在事件確定的前提下,採用一種單執行緒的輪詢機制?
- 什麼事件?四種事件:ACCEPT(服務端),CONNECT(客戶端),READ,WRITE
- 事件怎麼讀取?每個Channel可以註冊一個或多個事件,為其相應端(客戶端/服務端)提供指定服務
- 怎麼實現?由Selector提供繫結和取出功能
===> Reactor模式:IO 多路複用
網路IO(檔案是Socket):
-
BIO-TRP模式:讀/寫 --> Socket <==> ServerSocket --> 讀/寫
-
NIO-Reactor模式:
讀/寫 --> Buffer --> Channel =
註冊
=> Selector --> Socket
<==>
ServerSocket --> Selector =取出
=> Channel --> Buffer --> 讀/寫
相關文章
- Java NIO:Buffer、Channel 和 SelectorJava
- NIO中SelectionKey和Channel、Selector的關係
- Java NIO - Channel 與 SelectorJava
- Java網路程式設計與NIO詳解4:淺析NIO包中的Buffer、Channel 和 SelectorJava程式設計
- NIO(四)channel總結
- NIO(五)Buffer總結
- Buffer和Channel
- Java NIO之SelectorJava
- Java NIO Channel 使用Java
- Java NIO - BufferJava
- JAVA NIO BufferJava
- Java-NIO之SelectorJava
- Java NIO Selector 的使用Java
- Java NIO 之 Channel(通道)Java
- Java - NIO之Channel(FileChannel)Java
- 6 Java NIO Channel to Channel Transfers-翻譯Java
- Java NIO之BufferJava
- Java NIO 選擇器 SelectorJava
- Java NIO系列教程(六) SelectorJava
- Java NIO系列教程(二) ChannelJava
- Java-NIO之Channel(通道)Java
- NIO系列1:Channel的理解
- Java - NIO之Buffer(上)Java
- Java - NIO之Buffer(下)Java
- mysql change buffer小結MySql
- Java NIO學習系列三:SelectorJava
- Java NIO之Selector(選擇器)Java
- 7 Java NIO Selector-翻譯Java
- page cache與buffer cache的關係
- Java NIO學習系列二:ChannelJava
- nio再學習之通道channel
- 2 Java NIO Channel-翻譯Java
- 關於RMAN 備份片backup copies 和通道CHANNEL之間關係的總結
- Java NIO之Buffer的使用Java
- Buffer Busy Wait小結AI
- Nio再學習之NIO的buffer緩衝區
- 【Java】NIO中Selector的建立原始碼分析Java原始碼
- Java NIO學習系列一:BufferJava