NIO

1.I/O模型說明

  • 簡(jiǎn)單理解:通過什么方式去發(fā)送和接收屬性
  • java支持3中網(wǎng)絡(luò)編程模型I/O模式:BIO (同步阻塞)、 NIO(同步非阻塞)、 AIO(異步非阻塞)

2.NIO
同步非阻塞璧坟,服務(wù)器實(shí)現(xiàn)模式為一個(gè)線程處理多個(gè)請(qǐng)求(連接),即客戶端發(fā)送的連接請(qǐng)求都會(huì)注冊(cè)到多路復(fù)用器上桅咆,多路復(fù)用器輪詢到連接有 I/O 請(qǐng)求就進(jìn)行處理斗遏,jdk1.4之后開始支持,一個(gè)線程可以處理多個(gè)讀寫

image.png

NIO介紹:

  • NIO 有三大核心部分:Channel(通道)梅猿,Buffer(緩沖區(qū)), Selector(選擇器)
  • NIO是 面向緩沖區(qū)編程的氓辣。數(shù)據(jù)讀取到一個(gè)緩沖區(qū)中,需要時(shí)可在緩沖區(qū)中前后移動(dòng)袱蚓,這就增加了處理過程中的靈活性钞啸,使用它可以提供非阻塞式的高伸縮性網(wǎng)絡(luò)
  • . Java NIO 的非阻塞模式,使一個(gè)線程從某通道發(fā)送請(qǐng)求或者讀取數(shù)據(jù)喇潘,但是它僅能得到目前可用的數(shù)據(jù)体斩,如果目前沒有數(shù)據(jù)可用時(shí),就什么都不會(huì)獲取颖低,而不是保持線程阻塞絮吵,所以直至數(shù)據(jù)變的可以讀取之前,該線程可以繼續(xù)做其他的事情忱屑。 非阻塞寫也是如此蹬敲,一個(gè)線程請(qǐng)求寫入一些數(shù)據(jù)到某通道暇昂,但不需要等待它完全寫入, 這個(gè)線程同時(shí)可以去做別的事情伴嗡。通俗理解:NIO 是可以做到用一個(gè)線程來處理多個(gè)操作的急波。假設(shè)有 10000 個(gè)請(qǐng)求過來,根據(jù)實(shí)際情況,可以分配50 或者 100 個(gè)線程來處理瘪校。不像之前的阻塞 IO 那樣澄暮,非得分配 10000 個(gè)

NIO和 BIO的比較

  • BIO 以流的方式處理數(shù)據(jù),而 NIO 以緩沖區(qū)的方式處理數(shù)據(jù),緩沖區(qū) I/O 的效率比流 I/O 高很多
  • BIO 是阻塞的,NIO則是非阻塞的
  • BIO 基于字節(jié)流和字符流進(jìn)行操作阱扬,而 NIO 基于 Channel(通道)和 Buffer(緩沖區(qū))進(jìn)行操作赏寇,數(shù)據(jù)總是從通道讀取到緩沖區(qū)中,或者從緩沖區(qū)寫入到通道中价认。Selector(選擇器)用于監(jiān)聽多個(gè)通道的事件(比如:連接請(qǐng)求, 數(shù)據(jù)到達(dá)等)自娩,因此使用單個(gè)線程就可以監(jiān)聽多個(gè)客戶端通道

緩沖區(qū)Buffer
緩沖區(qū)本質(zhì)上是一個(gè)可以讀寫數(shù)據(jù)的內(nèi)存塊用踩,可以理解成是一個(gè)數(shù)組,該對(duì)象提供了一組方法忙迁,可以更輕松地使用內(nèi)存塊脐彩,緩沖區(qū)對(duì)象內(nèi)置了一些機(jī)制,能夠跟蹤和記錄緩沖區(qū)的狀態(tài)變化情況姊扔。Channel 提供從網(wǎng)絡(luò)讀取數(shù)據(jù)的渠道惠奸,但是讀取或?qū)懭氲臄?shù)據(jù)都必須經(jīng)由 Buffer

通道Channel
通常來說NIO中的所有IO都是從 Channel(通道) 開始的。NIO 的通道類似于流恰梢,但有些區(qū)別如下:

  1. 通道可以讀也可以寫佛南,流一般來說是單向的(只能讀或者寫,所以之前我們用流進(jìn)行IO操作的時(shí)候需要分別創(chuàng)建一個(gè)輸入流和一個(gè)輸出流)
  2. 通道可以異步讀寫
  3. 通道總是基于緩沖區(qū)Buffer來讀寫

選擇器Selector
可以用一個(gè)線程嵌言,處理多個(gè)的客戶端連接嗅回,就會(huì)使用到NIO的Selector(選擇器). Selector 能夠檢測(cè)
多個(gè)注冊(cè)的服務(wù)端通道上是否有事件發(fā)生,如果有事件發(fā)生摧茴,便獲取事件然后針對(duì)每個(gè)事件進(jìn)行相應(yīng)的處理绵载。這樣就可以只用一個(gè)單線程去管理多個(gè)通道,也就是管理多個(gè)連接和請(qǐng)求

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末苛白,一起剝皮案震驚了整個(gè)濱河市娃豹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌购裙,老刑警劉巖懂版,帶你破解...
    沈念sama閱讀 212,542評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異缓窜,居然都是意外死亡定续,警方通過查閱死者的電腦和手機(jī)谍咆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來私股,“玉大人摹察,你說我怎么就攤上這事〕ǎ” “怎么了供嚎?”我有些...
    開封第一講書人閱讀 158,021評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)峭状。 經(jīng)常有香客問我克滴,道長(zhǎng),這世上最難降的妖魔是什么优床? 我笑而不...
    開封第一講書人閱讀 56,682評(píng)論 1 284
  • 正文 為了忘掉前任劝赔,我火速辦了婚禮,結(jié)果婚禮上胆敞,老公的妹妹穿的比我還像新娘着帽。我一直安慰自己,他們只是感情好移层,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評(píng)論 6 386
  • 文/花漫 我一把揭開白布仍翰。 她就那樣靜靜地躺著,像睡著了一般观话。 火紅的嫁衣襯著肌膚如雪予借。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,985評(píng)論 1 291
  • 那天频蛔,我揣著相機(jī)與錄音灵迫,去河邊找鬼。 笑死帽驯,一個(gè)胖子當(dāng)著我的面吹牛龟再,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播尼变,決...
    沈念sama閱讀 39,107評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼利凑,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了嫌术?” 一聲冷哼從身側(cè)響起哀澈,我...
    開封第一講書人閱讀 37,845評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎度气,沒想到半個(gè)月后割按,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,299評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡磷籍,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評(píng)論 2 327
  • 正文 我和宋清朗相戀三年适荣,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了现柠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,747評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡弛矛,死狀恐怖够吩,靈堂內(nèi)的尸體忽然破棺而出丈氓,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 34,441評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站嘉赎,受9級(jí)特大地震影響拇囊,放射性物質(zhì)發(fā)生泄漏寥袭。R本人自食惡果不足惜传黄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評(píng)論 3 317
  • 文/蒙蒙 一膘掰、第九天 我趴在偏房一處隱蔽的房頂上張望凡伊。 院中可真熱鬧系忙,春花似錦银还、人聲如沸戒财。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)歉铝。三九已至太示,卻和暖如春香浩,著一層夾襖步出監(jiān)牢的瞬間邻吭,已是汗流浹背囱晴。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評(píng)論 1 267
  • 我被黑心中介騙來泰國(guó)打工驮瞧, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留论笔,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,545評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像管嬉,于是被迫代替她去往敵國(guó)和親皂林。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容