簡介:
bio:同步阻塞式io。實現模式為1個連線對應乙個執行緒。即每有1個新的請求時,就需要建立乙個新的執行緒去處理,並且執行緒永遠不會釋放。如果這個連線不去做任何事情的話,會造成資源浪費。
nio:同步非阻塞式io。實現模式為1個請求對應乙個執行緒。即有乙個新的請求時,會註冊到作業系統tcp。而服務端通過查詢tcp連線情況,去做對應的處理。即如果是有資料請求的連線才去開啟新的執行緒處理它,處理完成執行緒即可釋放。
圖例:bio:
**示例:
}//迴圈獲取新連線 -->如果有新請求 往下走沒有新請求則阻塞,不往下走
//往下走 1個新請求會建立乙個新執行緒 執行緒內迴圈處理 舊版本io屬於阻塞io 沒有資料傳入則阻塞 執行緒一直處於沒執行完狀態,則執行緒會一直占用
}iterator.remove(); //刪除處理過的結果(事件)
}selector.selectnow();}}
}學習之路,永無止境。今日看學習直播的一點收穫,以此篇文章記錄一下。哈哈~?
BIO和NIO的區別
bio 同步阻塞 每乙個io請求都會有乙個執行緒去處理,如果資料沒有準備就緒,執行緒會一直等待。直到資料讀取完畢執行緒才會釋放,在此期間,程序不回去做任何其他任務,這種模式會浪費一定的執行緒資源。nio 同步非阻塞 nio的優點在於首先基於快取讀寫檔案,能夠批量操作,然後用channel雙向讀寫資料...
Tomcat的BIO和NIO一些問題
最近一些朋友通過書籍找到我,問了一些關於tomcat中bio和nio的問題,這裡列一下方便需要的朋友。後續也將前面有朋友問的問題整理下。只把 tomcat 的 bio 模式改為 nio 模式,是否能提高伺服器的吞吐量?發現在配置一樣的情況下,兩種模式壓出來的吞吐量差不多。要看你系統是不是整個都非同步...
面試官 說一下NIO和BIO的區別
bio,面向流,只能讀或者只能寫,阻塞io nio,面向緩衝區,可以同時進行讀寫,非阻塞io 整個bio的繼承關係如上圖,每種流只能寫或者讀,整個bio流的設計用了裝飾者模式,如果你不清楚的話,可以看 面試官 說一下裝飾者模式的作用,以及哪些地方用到了裝飾者模式吧 本文不再介紹 nio涉及到的api...