天天看點

5分鐘搞懂io、nio、bio

i/o即input/output,就是指讀寫操作

面試官經常問io和nio的差別,如果把io和nio放一起比較的話,那這裡的io其實可以了解為bio,即blocking-io:

bio:同步阻塞

bio是java傳統的io模型,他是同步阻塞io,一個線程觸發io操作後,必須等待這個io操作執行完成,期間不能去做其他事情;

nio:同步非阻塞

nio(non-blocking-io)是同步非阻塞io,一個線程觸發io操作後它可以立即傳回,但是他需要不斷地輪詢去擷取傳回結果;

aio:異步非阻塞

aio(Asynchronous-io)是異步非阻塞io,一個線程觸發io操作後她可以立馬傳回去做其他事情,核心系統将io操作執行完成後會通知線程;

多路複用io:異步阻塞

io多路複用:可以了解為異步阻塞io,但官方沒這麼叫,一個線程可以管理多個連接配接,不用來回切換;