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,但官方沒這麼叫,一個線程可以管理多個連接配接,不用來回切換;