国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Java網(wǎng)絡(luò)編程(三)一文讀懂NIO

2023-06-30 22:57 作者:懶人Java屈原  | 我要投稿

什么是NIO

NIO被稱作是 New IO或者Non block IO。它是Jdk1.4開(kāi)發(fā)引入的類庫(kù)。NIO與BIO的最大不同是,BIO是面向流,而BIO是面向緩沖區(qū)buffer。Java的IO數(shù)據(jù)流向是固定的,要么讀,要么寫。但是NIO則可以同時(shí)支持讀寫。

NIO三大核心

1.Selector

前面的linux的5種IO模型?提到過(guò),NIO模型會(huì)不斷的輪詢,向操作系統(tǒng)確認(rèn)數(shù)據(jù)。Jdk中,Selector承當(dāng)了這個(gè)職責(zé)。Selector維護(hù)著一張Channel列表,然后不斷輪詢檢查channel狀態(tài)。一旦發(fā)生某個(gè)channel發(fā)生讀寫事件,就會(huì)被檢測(cè)到,進(jìn)行后續(xù)的IO操作。

2.Channel

應(yīng)用程序與底層操作系統(tǒng)之間的橋梁,應(yīng)用程序能通過(guò)channel讀取數(shù)據(jù),也能通過(guò)它向操作系統(tǒng)寫入數(shù)據(jù)。

3.Buffer

緩沖區(qū)buffer是一個(gè)對(duì)象,它包含了需要寫入或者讀出的數(shù)據(jù)。Buffer有3個(gè)重要屬性:

capacity:

存儲(chǔ)數(shù)據(jù)的最大容量,你只能最大往里面寫capacity個(gè)int、short等類型數(shù)據(jù)。滿了之后,需要通過(guò)讀取數(shù)據(jù)或者清楚數(shù)據(jù)兩種方法,才能繼續(xù)往里面寫。

position:

讀模式(Reading mode)下,代表了從這開(kāi)始讀。

寫模式(Writing mode)下,代表了從這開(kāi)始寫。

buffer.clear能將清空重新寫入,buffer的flip能將寫模式切換為讀模式

limit:

讀模式(Reading mode)下,表示你最多能讀多少條數(shù)據(jù)。在從寫模式切換到讀模式,position與limit數(shù)值相同,代表你能讀取之前寫入的所有數(shù)據(jù)。

寫模式(Writing mode)下,數(shù)值與capacity相同。

Nio的寫

1.selector輪詢監(jiān)聽(tīng)到通道寫事件

2.數(shù)據(jù)寫入到buffer緩存

3.buffer緩存數(shù)據(jù)通過(guò)channel通道發(fā)送出去

Nio的讀

1.數(shù)據(jù)通過(guò)channel接收數(shù)據(jù)到buffer

2.selector輪詢觸發(fā)

3.數(shù)據(jù)讀取到應(yīng)用程序

Nio的全模式

Java的八大基本類型,除了Boolean類型外,其他都有對(duì)應(yīng)的Buffer,至于這是為什么,就留給聰明的你來(lái)解答了。

Java網(wǎng)絡(luò)編程(三)一文讀懂NIO的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
松溪县| 秦安县| 林口县| 喀喇沁旗| 互助| 曲沃县| 天津市| 九台市| 新昌县| 广德县| 新余市| 会昌县| 福安市| 望城县| 绥中县| 昔阳县| 屏东市| 迭部县| 纳雍县| 嘉义县| 临夏市| 疏附县| 蓬溪县| 乐安县| 吕梁市| 津市市| 呼玛县| 油尖旺区| 集安市| 威海市| 浑源县| 曲麻莱县| 钟山县| 乐清市| 屏东县| 闽清县| 绵阳市| 沈阳市| 雅安市| 苏尼特右旗| 临桂县|