天天看點

【網絡程式設計】java網絡程式設計之BIO/NIO/AIO對比

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    性能高     服務端一個線程回調異步通知