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

歡迎光臨散文網(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ó)家法律
伽师县| 景德镇市| 焉耆| 花莲县| 游戏| 永济市| 唐海县| 西乌珠穆沁旗| 利津县| 铜山县| 邳州市| 凤庆县| 石狮市| 蓬安县| 婺源县| 屯昌县| 临猗县| 德安县| 兰考县| 新化县| 锦屏县| 洛浦县| 手机| 阿克陶县| 徐水县| 兴安盟| 翼城县| 兴和县| 张家口市| 库伦旗| 舟山市| 集贤县| 芮城县| 无锡市| 江西省| 邳州市| 德兴市| 文成县| 静乐县| 甘谷县| 来凤县|