javaIO分類

Java IO

BIO:Block-IO,同步且阻塞

Block-IO是一種同步且阻塞的通信模式。是一個比較傳統的通信方式,模式簡單,使用方便。但併發處理能力低,依賴網速。

NIO:Non-Block-IO,同步非阻塞

Java SE1.4版以後,針對網絡傳輸效能優化的新功能。

AIO:Asynchronous-IO,異步非阻塞

NIO的基礎上引入了新的異步通信概念,並提供了異步文件通道和異步套接字通道實現。

區別

AIO原來的IO有同樣的作用和目的,他們之間重要的區別是數據打包和傳輸的方式。原來的IO以流的方式處理數據,而NIO以塊的方式處理數據。

面向流的IO系統一次一個字節地處理數據。一個輸入流產生一個字節的數據,一個輸出流消費一個字節數據。

面向塊的IO以塊的形式處理數據,每一個操作都在一步中產生或者消費一個塊。按塊處理數據比字節處理數據要快的多,但比流式缺少優雅和簡單的編碼特性。

適用場景

BIO適用與連接數目比較小且固定的架構,對服務器資源要求高,併發侷限於應用中,但程序直觀簡單易理解。

NIO適用於連接數據多且連接比較短的架構。比如聊天服務器,併發侷限與應用,程序比較複雜。

AIO適用於連接數目多且比較長的架構。比如相冊服務器,充分調用OS參與併發操作,程序複雜。

java版本中的IO

JDK1.4之前的IO沒有緩衝區的概念,不支持正則表達式,支持的字符集編碼有限等等。
JDK1.4的時候引入了非阻塞IO,也就是NIO 1.0,但遍歷目錄很困難,不支持文件系統的非阻塞操作等等。
爲了解決這些問題,JDK1.7的時候引入了新的NIONIO 2.0

參考

漫話:如何給女朋友解釋什麼是BIO、NIO和AIO?
Java:前程似錦的 NIO 2.0

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章