1.java網絡程式設計之BIO/NIO/AIO對比:
1.舉例:點單
同步阻塞:下單,等飯,直到做好,交接 BIO
同步非阻塞:下單,不等待,定時輪詢,等好了,交接 NIO
異步非阻塞:下單,不等待,不輪詢,好了,送家裡 AIO
2.對比:
BIO:
服務端一個線程管理用戶端一個連接配接:1v1
針對1個連接配接,需要等待擷取響應結果,即為【阻塞】
【同步】:是指需要等待另一端操作完成,即【主動擷取響應結果】
NIO:
服務端一個線程管理多個連接配接:1vN
針對一個連接配接,定時輪詢,不等待執行結果,即為【非阻塞】
主動擷取響應結果,即為【同步】
AIO:
服務端一個線程管理多個連接配接:1vN
針對一個連接配接,服務端将執行結果,通過回調方式主動告知用戶端,為【異步】
用戶端不用等待結果傳回,為【非阻塞】
3.綜上:
BIO 阻塞 同步 簡單 客戶機/伺服器線程對比1:1 性能低 服務端N的線程1v1處理
NIO 非阻塞 同步 困難 客戶機/伺服器線程對比N:1 性能高 服務端一個線程輪詢處理
AIO 非阻塞 異步 困難 客戶機/伺服器線程對比N:1 性能高 服務端一個線程回調異步通知