天天看點

IO NIO AIO 同步 異步 阻塞 非阻塞

傳統javaIO 是同步阻塞IO,在同一個線程内,必須等到阻塞線程傳回才會繼續處理

NIO 是同步非阻塞IO,還是在同一個線程内處理,隻不過是設定為非阻塞,同時selctor 會不斷查詢channel 狀态,狀态的變更同一處理線程會進行不同的處理

AIO 是異步非阻塞IO

阻塞與非阻塞 指的是對記憶體而言,例如記憶體讀取檔案内容,讀取網卡内容

異步與非異步指的是針對是否一個線程處理進行處理還是多線程協作

備注:一般大家說 NIO 是非阻塞的,指的是網絡程式設計中用戶端與服務端連接配接交換資料的過程是非阻塞的。普通的檔案讀寫依然是阻塞的,和 IO 是一樣的,這一點可能很多初學者會懵,包括我當時也總想不通為什麼說 NIO 的檔案讀寫是非阻塞的,明明就是阻塞的。

繼續閱讀