最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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ó)家法律
白城市| 黄梅县| 图木舒克市| 偃师市| 双辽市| 柳州市| 台北县| 石阡县| 肥西县| 石家庄市| 青龙| 铜鼓县| 汝阳县| 抚松县| 南华县| 贵港市| 舒城县| 宁远县| 海淀区| 滨海县| 兴宁市| 会理县| 嘉禾县| 海城市| 宜丰县| 长寿区| 永康市| 德昌县| 秦皇岛市| 南京市| 化隆| 沙雅县| 江都市| 延津县| 平乡县| 桐梓县| 鄂尔多斯市| 仁怀市| 泸州市| 青浦区| 大港区|