java之BIO NIO AIO
-
BIO: 同步阻塞IO模型:數據的讀取寫入必須阻塞在一個線程內等待其完成。
-
NIO :同步非阻塞I/O模型
-
定義:同步非阻塞,服務實現模式是一個線程可以處理多個連接,即客戶端發送的連接都會註冊到多路複用器上,然後進行輪詢連接,有I/O請求就處理。
-
三大核心內容:Selector(選擇器)、Channel(通道)、Buffer(緩衝區)。
-
selector:用於監聽多個Channel的事件,並對檢測到的I/O事件進行相應的響應和處理。
-
Channel:雙向的,既可以進行讀操作,也可以進行寫操作。
-
Buffer:本質是個容器、其內部通過一個連續的字節數組存儲I/O上的數據。
-
-
AIO:異步非阻塞I/O模型:AIO 也就是 NIO 2,在 Java 7 中引⼊了 NIO 的改進版 NIO 2,它 是異步⾮阻塞的 IO 模型。異步 IO 是基於事件和回調機制實現的,也就是應⽤操作之後會直 接返回,不會堵塞在那⾥,當後臺處理完成,操作系統會通知相應的線程進⾏後續的操作
BIO | NIO | AIO | |
---|---|---|---|
IO模型 | 同步阻塞 | 同步非阻塞(多路複用) | 異步非阻塞 |
面向流(Stream) | 面向緩衝區塊(Buffer)【效率:塊》流】 | ||
應用場景 | 適用連接數目比較小且固定的架構,對服務器要求比較高,併發侷限於應用中 | 適用連接數目多且連接比較短的架構,如:聊天服務器,彈幕系統等,編程比較複雜 | 適用連接數目多且連接長的架構,如相冊服務器 |