日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > ChatGpt >内容正文

ChatGpt

关于java流的几个概念:IO、BIO、NIO、AIO,有几个人全知道?

發布時間:2023/12/3 ChatGpt 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于java流的几个概念:IO、BIO、NIO、AIO,有几个人全知道? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自?關于java流的幾個概念:IO、BIO、NIO、AIO,有幾個人全知道?


關于同步、阻塞的知識我之前的文章有介紹,所以關于流用到這些概念與之前多線程用的概念一樣。


下面具體來看看java中的幾種流


IO/BIO


BIO就是指IO,即傳統的Blocking IO,即同步并阻塞的IO。這也是jdk1.4之前的唯一選擇,依賴于ServerSocket實現,即一個請求對應一個線程,如果線程數不夠連接則會等待空余線程或者拒絕連接。所以用這種方式,在高并發情況下效率是很低的,也不可靠,一般只應用于連接數比較小且固定架構的應用,但api也比較容易使用。


NIO


新的IO,即New IO或者Non-Blocking IO,即同步不阻塞的IO。jdk1.4之后提供了一系列的方法來操作流,定義在java.nio包下面。相比于傳統的BIO,NIO 提供了高速的面向快的I/O,它加入了Buffer、Channel、Selector等概念。它是基于事件驅動的,采用了Reactor模式,它使用一個線程管理所有的socket通道,即客戶端發送的連接請求都會注冊到多路復用器上,多路復用器輪詢到連接有I/O請求時才啟動一個線程進行處理。它的特點是要不斷主動地去詢問數據有沒有處理完,一般只適用于連接數目較大但連接時間短的應用,如聊天應用等。


AIO


新的IO2.0,即NIO2.0,jdk1.7開始應用,叫做異步不阻塞的IO。AIO引入異常通道的概念,采用了Proactor模式,簡化了程序編寫,一個有效的請求才啟動一個線程,它的特點是先由操作系統完成后才通知服務端程序啟動線程去處理,一般適用于連接數較多且連接時間長的應用。



幾種IO的綜合對比:



BIONIOAIO
客戶端:線程數1:1M:1M:0
阻塞類型阻塞非阻塞非阻塞
同步類型同步同步異步
編程難度簡單非常復雜復雜
調試難度簡單復雜復雜
可靠性非常差
吞吐量


java提供的NIO的api使用比較復雜,一般建議使用像netty這樣的框架,而不要使用jdk自帶的api。



總結

以上是生活随笔為你收集整理的关于java流的几个概念:IO、BIO、NIO、AIO,有几个人全知道?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。