java中NIO的用法

這篇文章主要講解了“java中NIO的用法”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“java中NIO的用法”吧!

雙遼網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站等網(wǎng)站項目制作,到程序開發(fā),運營維護。成都創(chuàng)新互聯(lián)于2013年創(chuàng)立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)

背景

Linux系統(tǒng)中的IO操作內(nèi)部相當(dāng)復(fù)雜,下面是一張帶圖片的LinuxIO相關(guān)層級關(guān)系:

java中NIO的用法

下面是一個簡化版本Linux內(nèi)部IO層級圖:

java中NIO的用法

對此我的理解,java程序員版本的IO理解:

java中NIO的用法

java中的IO

從最早bio的只支持阻塞的bio(同步阻塞)

到默認(rèn)阻塞支持非阻塞nio(同步非阻塞+同步阻塞)

再到aio(異步非阻塞)

NIO

  • FileChannel:從文件讀取數(shù)據(jù)的

  • DatagramChannel:讀寫UDP網(wǎng)絡(luò)協(xié)議數(shù)據(jù)

  • SocketChannel:讀寫TCP網(wǎng)絡(luò)協(xié)議數(shù)據(jù)

  • ServerSocketChannel:可以監(jiān)聽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

AIO

示例代碼: 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

NIO的應(yīng)用

作為jdk的基礎(chǔ)類庫,被很多應(yīng)用使用了,此處列舉了幾個常見的

tomcat

java中NIO的用法

http://tomcat.apache.org/tomcat-9.0-doc/config/http.html#Connector_Comparison

jetty

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

netty

 作為nio最常用的封裝類庫

總結(jié)

nio更多解決的是線程資源的浪費,而非單個操作響應(yīng)時間的提升

使用NIO != 高性能,當(dāng)連接數(shù)<1000,并發(fā)程度不高或者局域網(wǎng)環(huán)境下NIO并沒有顯著的性能優(yōu)勢。

NIO并沒有完全屏蔽平臺差異,它仍然是基于各個操作系統(tǒng)的I/O系統(tǒng)實現(xiàn)的,差異仍然存在。使用NIO做網(wǎng)絡(luò)編程構(gòu)建事件驅(qū)動模型并不容易,陷阱重重。 推薦大家使用成熟的NIO框架,如Netty,MINA等。解決了很多NIO的陷阱,并屏蔽了操作系統(tǒng)的差異,有較好的性能和編程模型。

感謝各位的閱讀,以上就是“java中NIO的用法”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對java中NIO的用法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

當(dāng)前題目:java中NIO的用法
標(biāo)題網(wǎng)址:http://bm7419.com/article48/psdjhp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、網(wǎng)站營銷、建站公司、定制網(wǎng)站小程序開發(fā)、網(wǎng)站設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名