重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
這篇文章主要講解了“java中NIO的用法”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“java中NIO的用法”吧!
雙遼網站制作公司哪家好,找成都創新互聯!從網頁設計、網站建設、微信開發、APP開發、響應式網站等網站項目制作,到程序開發,運營維護。成都創新互聯于2013年創立到現在10年的時間,我們擁有了豐富的建站經驗和運維經驗,來保證我們的工作的順利進行。專注于網站建設就選成都創新互聯。
Linux系統中的IO操作內部相當復雜,下面是一張帶圖片的LinuxIO相關層級關系:
下面是一個簡化版本Linux內部IO層級圖:
對此我的理解,java程序員版本的IO理解:
從最早bio的只支持阻塞的bio(同步阻塞)
到默認阻塞支持非阻塞nio(同步非阻塞+同步阻塞)
再到aio(異步非阻塞)
FileChannel:從文件讀取數據的
DatagramChannel:讀寫UDP網絡協議數據
SocketChannel:讀寫TCP網絡協議數據
ServerSocketChannel:可以監聽TCP連接
示例代碼: socket https://github.com/victorsheng/verification-everything/tree/master/io/src/main/java/socket/nio file https://github.com/victorsheng/verification-everything/tree/master/io/src/main/java/file/nio
示例代碼: socket https://github.com/victorsheng/verification-everything/tree/master/io/src/main/java/socket/aio file https://github.com/victorsheng/verification-everything/tree/master/io/src/main/java/file/aio
作為jdk的基礎類庫,被很多應用使用了,此處列舉了幾個常見的
http://tomcat.apache.org/tomcat-9.0-doc/config/http.html#Connector_Comparison
Prior to Jetty 9, the type of the connector reflected both the protocol supported (HTTP, HTTPS, AJP, SPDY), and the nature of the implementation (NIO or BIO). From Jetty 9 onwards there is only one prime Connector type (ServerConnector), which is NIO based and uses Connection Factories to handle one or more protocols.
https://www.eclipse.org/jetty/documentation/9.4.x/quickstart-config-what.html#intro-jetty-configuration-connectors
作為nio最常用的封裝類庫
nio更多解決的是線程資源的浪費,而非單個操作響應時間的提升
使用NIO != 高性能,當連接數<1000,并發程度不高或者局域網環境下NIO并沒有顯著的性能優勢。
NIO并沒有完全屏蔽平臺差異,它仍然是基于各個操作系統的I/O系統實現的,差異仍然存在。使用NIO做網絡編程構建事件驅動模型并不容易,陷阱重重。 推薦大家使用成熟的NIO框架,如Netty,MINA等。解決了很多NIO的陷阱,并屏蔽了操作系統的差異,有較好的性能和編程模型。
感謝各位的閱讀,以上就是“java中NIO的用法”的內容了,經過本文的學習后,相信大家對java中NIO的用法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創新互聯,小編將為大家推送更多相關知識點的文章,歡迎關注!