Netty由淺到深_第二章_NIO模型簡單介紹

I/O模型基本說明

  1. Java NIO全稱java non-blocking IO。從JDK1.4開始,java提供一系列改進的輸入/輸出的新特性,被統稱爲NIO(New IO),是同步非阻塞的。
  2. NIO相關類都被放在java.nio包及子包下,並且對原java.io包中的很多類進行改寫
  3. NIO有三大核心部分:Channel(通道)Buffer(緩衝區)Selector(選擇器)
  4. NIO是面向緩衝區,或者面向塊編程的。數據讀取到一個它稍後處理的緩衝區,需要時可在緩衝區前後移動,這就增加了處理過程中的靈活性,使用它可以提供非阻塞式的高伸縮性網絡
  5. java NIO的非阻塞模式。一個線程從某通道發送請求或者讀取數據,如果目前沒有數據可用,就什麼都不會獲取,而不是保持線程阻塞,所以直至數據變得可以讀取之前,該線程可以繼續做其他的事情。非阻塞寫也是如此,一個線程請求寫入一些數據到某通道,但不需要等待它完全寫入,這個線程同時可以去做別的事情
  6. 通俗理解:NIO是可以做到一個線程處理多個操作。假設10000個請求過來,根據實際情況,可以分配50或者100個線程來處理。不像之前的阻塞IO那樣,非得分配1000個
  7. HTTP2.0使用了多路複用的技術,做到同一個連接併發處理多個請求,並且併發請求的數量比HTTP1.0大了好幾個數量級

NIO和BIO的比較

  1. BIO以流的方式處理數據,而NIO以塊的方式處理數據,塊I/O的效率比流I/O高很多
  2. BIO是阻塞的,NIO是非阻塞的
  3. BIO基於字節流和字符流進行操作,而NIO基於Channel(通道)和Buffer(緩衝區)進行操作,數據總是從通道讀取到緩衝區中,或者從緩衝區寫道通道中Selector(選擇器)用於監聽多個通道的事件(比如:連接請求,數據到達等),因此使用單線程就可以監聽多個客戶端通道
親!記得觀看下一篇文章(鏈接更新後附)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章