資料內(nèi)容:
缺點(diǎn): 1、IO代碼里read操作是阻塞操作,如果連接不做數(shù)據(jù)讀寫操作會(huì)導(dǎo)致線程阻塞,浪費(fèi)資源 2、如果線程很多,會(huì)導(dǎo)致服務(wù)器線程太多,壓力太大,比如C10K問題 應(yīng)用場景: BIO 方式適用于連接數(shù)目比較小且固定的架構(gòu), 這種方式對(duì)服務(wù)器資源要求比較高, 但程序簡單易理解。 NIO(Non Blocking IO) 同步非阻塞,服務(wù)器實(shí)現(xiàn)模式為一個(gè)線程可以處理多個(gè)請(qǐng)求(連接),客戶端發(fā)送的連接請(qǐng)求都會(huì)注冊(cè)到多路復(fù)用器selector上,多路復(fù)用 器輪詢到連接有IO請(qǐng)求就進(jìn)行處理,JDK1.4開始引入。 應(yīng)用場景: NIO方式適用于連接數(shù)目多且連接比較短(輕操作) 的架構(gòu), 比如聊天服務(wù)器, 彈幕系統(tǒng), 服務(wù)器間通訊,編程比較復(fù)雜 NIO非阻塞代碼示例: