您好,登錄后才能下訂單哦!
這篇文章主要介紹“java流的概念是什么”,在日常操作中,相信很多人在java流的概念是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”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的綜合對比:
BIO | NIO | AIO | |
客戶端:線程數 | 1:1 | M:1 | M:0 |
阻塞類型 | 阻塞 | 非阻塞 | 非阻塞 |
同步類型 | 同步 | 同步 | 異步 |
編程難度 | 簡單 | 非常復雜 | 復雜 |
調試難度 | 簡單 | 復雜 | 復雜 |
可靠性 | 非常差 | 高 | 高 |
吞吐量 | 低 | 高 | 高 |
java提供的NIO的api使用比較復雜,一般建議使用像netty這樣的框架,而不要使用jdk自帶的api。
到此,關于“java流的概念是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。