本篇所寫的io均為java bio體系(即jdk1.0發布的io),JDK1.4以前的唯一選擇,但程式直觀簡單易理解。
BIO:同步並阻塞,伺服器實作模式為連接一個線程,即客戶端有連接請求時伺服器端就需要啟動一個線程進行處理,如果這個連線不做任何事情會造成不必要的執行緒開銷,當然可以透過執行緒池機制來改善。 BIO方式適用於連線數目比較小且固定的架構,這種方式對伺服器資源需求比較高,並發侷限於應用程式中。
BIO
同步阻塞式IO,相信每一個學習過作業系統網路程式設計或任何語言的網路程式設計的人都很熟悉,在while循環中服務端會調用accept方法等待接收客戶端的連接請求,一旦接收到一個連接請求,就可以建立通信套接字在這個通信套接字上進行讀寫操作,此時不能再接收其他客戶端連接請求,只能等待同目前連線的客戶端的操作執行完成。
如果BIO要能夠同時處理多個客戶端請求,就必須使用多線程,即每次accept阻塞等待來自客戶端請求,一旦受到連接請求就建立通信套接字同時開啟一個新的線程來處理這個套接字的資料讀寫請求,然後立刻又繼續accept等待其他客戶端連線請求,也就是為每個客戶端連線請求都建立一個執行緒來單獨處理,大概原理圖就像這樣:
然此時伺服器具備了高並發能力,即能夠同時處理多個客戶端請求了,但是卻帶來了一個問題,隨著開啟的線程數目增多,將會消耗過多的記憶體資源,導致伺服器變慢甚至崩潰。
IO方式適用於連線數目比較小且固定的場景,這種方式對伺服器資源需求比較高,並發侷限於應用程式中。
相關學習推薦:java基礎教學
以上是java中bio是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!