Python知識(shí)分享網(wǎng) - 專(zhuān)業(yè)的Python學(xué)習(xí)網(wǎng)站 學(xué)Python,上Python222
Java BIO、NIO、AIO、Netty知識(shí)詳解 PDF 下載
發(fā)布于:2024-01-31 10:39:11
(假如點(diǎn)擊沒(méi)反應(yīng),多刷新兩次就OK!)

Java BIO、NIO、AIO、Netty知識(shí)詳解 PDF 下載  圖1

 

 

 

資料內(nèi)容:

 

1. 什么是IO
 

Java中I/O是以流為基礎(chǔ)進(jìn)行數(shù)據(jù)的輸入輸出的,所有數(shù)據(jù)被串行化(所謂串行化就是數(shù)據(jù)要按順序進(jìn)行輸入
輸出)寫(xiě)入輸出流。簡(jiǎn)單來(lái)說(shuō)就是java通過(guò)io流方式和外部設(shè)備進(jìn)行交互。
在Java類(lèi)庫(kù)中,IO部分的內(nèi)容是很龐大的,因?yàn)樗婕暗念I(lǐng)域很廣泛:標(biāo)準(zhǔn)輸入輸出,文件的操作,網(wǎng)絡(luò)上
的數(shù)據(jù)傳輸流,字符串流,對(duì)象流等等等。
比如程序從服務(wù)器上下載圖片,就是通過(guò)流的方式從網(wǎng)絡(luò)上以流的方式到程序中,在到硬盤(pán)中。

 

2. 同步與異步,阻塞與非阻塞的區(qū)別
 

同步,一個(gè)任務(wù)的完成之前不能做其他操作,必須等待(等于在打電話)
異步,一個(gè)任務(wù)的完成之前,可以進(jìn)行其他操作(等于在聊QQ)
阻塞,是相對(duì)于CPU來(lái)說(shuō)的, 掛起當(dāng)前線程,不能做其他操作只能等待
非阻塞,,無(wú)須掛起當(dāng)前線程,可以去執(zhí)行其他操作

 

3. 什么是BIO
 

BIO:同步并阻塞,服務(wù)器實(shí)現(xiàn)一個(gè)連接一個(gè)線程,即客戶(hù)端有連接請(qǐng)求時(shí)服務(wù)器端就需要啟動(dòng)一個(gè)線程進(jìn)
行處理,沒(méi)處理完之前此線程不能做其他操作(如果是單線程的情況下,我傳輸?shù)奈募艽竽??),?dāng)然可
以通過(guò)線程池機(jī)制改善。BIO方式適用于連接數(shù)目比較小且固定的架構(gòu),這種方式對(duì)服務(wù)器資源要求比較
高,并發(fā)局限于應(yīng)用中,JDK1.4以前的唯一選擇,但程序直觀簡(jiǎn)單易理解。

 

4. 什么是NIO
 

NIO:同步非阻塞,服務(wù)器實(shí)現(xiàn)一個(gè)連接一個(gè)線程,即客戶(hù)端發(fā)送的連接請(qǐng)求都會(huì)注冊(cè)到多路復(fù)用器上,多
路復(fù)用器輪詢(xún)到連接有I/O請(qǐng)求時(shí)才啟動(dòng)一個(gè)線程進(jìn)行處理。NIO方式適用于連接數(shù)目多且連接比較短(輕操
作)的架構(gòu),比如聊天服務(wù)器,并發(fā)局限于應(yīng)用中,編程比較復(fù)雜,JDK1.4之后開(kāi)始支持。

 

5.什么是AIO
 

AIO:異步非阻塞,服務(wù)器實(shí)現(xiàn)模式為一個(gè)有效請(qǐng)求一個(gè)線程,客戶(hù)端的I/O請(qǐng)求都是由操作系統(tǒng)先完成了再
通知服務(wù)器應(yīng)用去啟動(dòng)線程進(jìn)行處理,AIO方式使用于連接數(shù)目多且連接比較長(zhǎng)(重操作)的架構(gòu),比如相
冊(cè)服務(wù)器,充分調(diào)用操作系統(tǒng)參與并發(fā)操作,編程比較復(fù)雜,JDK1.7之后開(kāi)始支持。.
AIO屬于NIO包中的類(lèi)實(shí)現(xiàn),其實(shí)IO主要分為BIO和NIO,AIO只是附加品,解決IO不能異步的實(shí)現(xiàn)在以前很
少有Linux系統(tǒng)支持AIO,Windows的IOCP就是該AIO模型。但是現(xiàn)在的服務(wù)器一般都是支持AIO操作

 

6. 什么Netty
 

Netty是由JBOSS提供的一個(gè)Java開(kāi)源框架。Netty提供異步的、事件驅(qū)動(dòng)的網(wǎng)絡(luò)應(yīng)用程序框架和工具,用以
快速開(kāi)發(fā)高性能、高可靠性的網(wǎng)絡(luò)服務(wù)器和客戶(hù)端程序。Netty 是一個(gè)基于NIO的客戶(hù)、服務(wù)器端編程框
架,使用Netty 可以確保你快速和簡(jiǎn)單的開(kāi)發(fā)出一個(gè)網(wǎng)絡(luò)應(yīng)用,例如實(shí)現(xiàn)了某種協(xié)議的客戶(hù),服務(wù)端應(yīng)用。
Netty相當(dāng)簡(jiǎn)化和流線化了網(wǎng)絡(luò)應(yīng)用的編程開(kāi)發(fā)過(guò)程,例如,TCP和UDP的socket服務(wù)開(kāi)發(fā)。
Netty是由NIO演進(jìn)而來(lái),使用過(guò)NIO編程的用戶(hù)就知道NIO編程非常繁重,Netty是能夠能跟好的使用NIO。