java bio nio aio及同步,異步,阻塞,非阻塞的理解

BIO: Blocking-I/O,JDK 1.4以前的阻塞io模型

NIO: New-I/O, Non-Blocking I/O JDK1.4以後的非阻塞IO模型

AIO:Asynchronous I/O.異步IO模型。

同步與異步:
關於同步與異步的概念與理解,網上有兩種不同的說法。
一:同步與異步的主要區別在於處理IO的對象的不同。
同步:用戶線程自己處理IO操作;
異步:用戶線程自己不處理IO操作,而是委託調用操作系統進行IO讀寫操作,待操作系統讀寫完成後,通知用戶線程;
二:消息通知機制的不同。
同步:用戶進程主動的去詢問是否有數據準備好,如JDK1.4的NIO,線程其實會阻塞在Selector上,屬於IO的多路複用,並非真正的非阻塞IO;
異步:基於事件驅動模型,在數據準備完成後,主動的通知用戶線程進行處理。
個人更傾向於第一種看法。
阻塞與非阻塞:
阻塞:用戶線程在進行讀寫操作時,需要等待系統準備數據,待數據準備完成後,才能進行IO操作,在此期間,用戶線程一致阻塞;
非阻塞:用戶線程發起IO操作後,可以去進行其他的操作,一直等到數據準備完成後,在進行處理。在此期間會有一段時間的阻塞爲內核空間將數據複製到用戶空間的過程。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章