bio,nio,aio是什麼以及它們的區別

bio,nio,aio是什麼以及他們的區別

同步,異步,阻塞,非阻塞簡述

瞭解bio,nio,aio的前置條件要了解下面的概念:
同步:java自己處理io讀寫
異步:java把io操作委託給os處理,且要把數據緩衝區大小和地址傳給os,os要支持異步io操作的api.

阻塞:java調用會一直阻塞直到讀寫完成。
非阻塞:如果不能進行讀寫,java調用會立即返回,當io事件分發器通知可讀寫時再繼續進行io讀寫,一直循環直到讀寫完成。

初識bio,nio,aio

bio :同步阻塞,服務器實現模式是一個連接一個線程,當客戶端發來連接時服務器就需要啓動一個線程進行處理,如果這個連接不做任何事情就會造成不必要的線程開銷,當然線程池機制可以改善。

nio:同步非阻塞,服務器實現模式爲多個請求一個線程,即客戶端發來的請求都會註冊到多路複用器上,多路複用器輪訓的連接有io請求時纔開啓一個線程進行處理。

aio:異步非阻塞,服務器實現模式爲多個有效請求一個線程。即客戶端發來的請求由os處理完成纔會通知服務器應用啓動線程進行處理。

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