bio、nio、aio含義跟適用場景:
bio(同步阻塞io):
定義:同步並阻塞,伺服器實現模式為乙個連線乙個執行緒,即客戶端有連線請求時伺服器端就需要啟動乙個執行緒進行處理,如果這個連線不做任何事情會造成不必要的執行緒開銷,當然可以通過執行緒池機制改善。
適用場景:適用於連線數目比較小且固定的架構,這種方式對伺服器資源要求比較高,併發侷限於應用中,jdk1.4以前的唯一選擇,但程式直觀簡單易理解。
nio(同步非阻塞io):
定義:同步非阻塞,伺服器實現模式為乙個請求乙個執行緒,即客戶端傳送的連線請求都會註冊到多路復用器上,多路復用器輪詢到連線有i/o請求時才啟動乙個執行緒進行處理。使用者程序也需要時不時的詢問io操作是否就緒,這就要求使用者程序不停的去詢問。
適用場景:適用於連線數目多且連線比較短(輕操作)的架構,比如聊天伺服器,併發侷限於應用中,程式設計比較複雜,jdk1.4開始支援。
aio(非同步非阻塞io):
定義:在此種模式下,使用者程序只需要發起乙個io操作然後立即返回,等io操作真正的完成以後,應用程式會得到io操作完成的通知,此時使用者程序只需要對資料進行處理就好了,不需要進行實際的io讀寫操作,因為真正的io讀取或者寫入操作已經由核心完成了。
使用場景:適用於連線數目多且連線比較長(重操作)的架構,比如相簿伺服器,充分呼叫os參與併發操作,程式設計比較複雜,jdk7開始支援。
Java通訊模型(BIO NIO AIO)筆記
1 常規技術 spring系統 orm元件 服務支援 資料庫表的crud處理 重複且大量的編寫 這種開發好像不是開發的感覺 2 未來的開發人才到底應該具備哪些技能 架構師 a 可以完成專案,同時可以很好的溝通 b 掌握各種常規的開發技術,並且掌握一些服務元件的使用 需要有好的運維 c 良好的 設計能...
個人理解的BIO NIO AIO
一般網路通訊設計到兩台電腦a,b。假設每個電腦都是linux核心,那麼兩個使用者程式的通訊過程就是 a上的使用者執行緒 a的核心 a的網絡卡 網線 b的網絡卡 b的核心 b上的使用者執行緒。那麼一般的同步形容的是哪一部分的內容呢?按照我的理解是,對於a b而言,如果是同步,在核心 使用者執行緒或者使...
BIO NIO AIO的形象比喻
bio blocking i o 同步阻塞i o模式。nio new i o 同步非阻塞模式。aio asynchronous i o 非同步非阻塞i o模型。先看阻塞和非阻塞的區別,以燒水為例 阻塞vs非阻塞 人是否坐在水壺前面一直等。同步vs非同步 水壺是不是在水燒開之後主動通知人。再加上同步 ...