BIO
Blocking IO:同步阻塞,一個線程一個連接,一個請求就需要一個線程。如果連接不做讀寫,那麼線程就會閒置。線程的開銷大。
優點及應用場景:適用於連接數目小且固定的架構。對服務器的資源要求較高,併發侷限與應用中。但簡單易於理解。
NIO
Non-Blocking IO:同步非阻塞,一個請求一個線程,但連接請求都是先註冊到多路複用器上,多路複用器輪詢到連接有IO請求時才啓動一個線程處理。
優點及應用場景:適用於連接數目多且連接時間短的架構,如聊天服務器、彈幕系統、分佈式系統通信。
三大核心組件:selector、channel、buffer
線程通過selector 來處理多個通道
面向緩衝區編程,channel和client不直接操作,而是通過緩衝區來進行操作。
AIO
Asynchronous I/O:異步非阻塞,一個有效請求一個線程,客戶端的IO請求都由OS先完成了再通知服務器去啓動線程處理。
優點及應用場景:適用於連接數目比較多且長的架構,如相冊服務器。