java bio nio aio區(qū)別 Java中BIO,NIO和AIO的區(qū)別和應(yīng)用場(chǎng)景?
Java中BIO,NIO和AIO的區(qū)別和應(yīng)用場(chǎng)景?AIO完全是異步通信。NiO是同步無(wú)阻塞通信。有一個(gè)典型的例子。把水燒開(kāi)。假設(shè)有一個(gè)場(chǎng)景,有一排水壺(顧客)在燒開(kāi)水。AIO的做法是,每個(gè)水壺都配有一
Java中BIO,NIO和AIO的區(qū)別和應(yīng)用場(chǎng)景?
AIO完全是異步通信。NiO是同步無(wú)阻塞通信。有一個(gè)典型的例子。把水燒開(kāi)。假設(shè)有一個(gè)場(chǎng)景,有一排水壺(顧客)在燒開(kāi)水。AIO的做法是,每個(gè)水壺都配有一個(gè)開(kāi)關(guān),當(dāng)水沸騰時(shí),開(kāi)關(guān)會(huì)提醒相應(yīng)的線程處理。NiO的方法是讓線程連續(xù)觀察每個(gè)水壺,并根據(jù)每個(gè)水壺的當(dāng)前狀態(tài)對(duì)其進(jìn)行處理。Bio的方法是讓線程留在一個(gè)水壺中,直到水壺沸騰,然后再處理下一個(gè)水壺。由此可見(jiàn),AIO最聰明也最省力,NiO相對(duì)省力,一個(gè)人能看到所有的鍋,bio最笨,勞動(dòng)力低。
nio的SocketChannel.configureBlocking和aio有什么區(qū)別嗎?
SocketChannel.configureBlocking接口(false)套接字上的讀寫(xiě)操作沒(méi)有被阻塞,即無(wú)論是否有數(shù)據(jù),讀寫(xiě)操作都會(huì)立即返回。此設(shè)置對(duì)于POSIX非塊標(biāo)志中的O非常有用。AIO(異步IO)在概念上比NiO更進(jìn)一步。它一般包括非阻塞的含義。此外,它還可以使操作并發(fā)執(zhí)行。
java AIO為什么不普及?
一個(gè)是JDK版本,它是在1.7之后添加的。另一個(gè)是Java語(yǔ)言中函數(shù)式編程的流行。
此外,考慮到大多數(shù)程序員都在做crud工作,AIO的使用往往基于基本軟件,因此它給人一種很少使用的感覺(jué)。