BIO 就是阻塞的IO,
比如在Socket編程中款咖,ServerSocket每次連接到的一個(gè)客戶端Socket围苫,都要為其分配一條線程單獨(dú)處理,否則處理該Socket會(huì)阻塞當(dāng)前線程彼乌。 所以BIO服務(wù)器是一個(gè)假異步的服務(wù)器
由于每次連接都要一條單獨(dú)線程泻肯,導(dǎo)致并發(fā)效率不高渊迁。
NIO,非阻塞IO
當(dāng)NIO連接到一個(gè)新的客戶端時(shí)灶挟,一般我們將新的通道注冊(cè)到Selector中琉朽,由Selector去處理通道中的內(nèi)容,一個(gè)Selector可以在一條線程中處理多個(gè)客戶端Channel稚铣,可不必對(duì)每個(gè)連接新建線程處理箱叁。
AIO 真異步
所以BIO的就是阻塞以及被喚醒。
而NIO的不會(huì)被阻塞惕医,而是反復(fù)詢問(wèn)各個(gè)通道里的數(shù)據(jù)是否準(zhǔn)備好直到有通道里的數(shù)據(jù)是準(zhǔn)備好的就處理