首頁(yè)技術(shù)文章正文

Java中的NIO是什么?NIO的核心組成部分有哪些?

更新時(shí)間:2021-07-02 來(lái)源:黑馬程序員 瀏覽量:

NIO是為替代傳統(tǒng)標(biāo)準(zhǔn)的I/O而出現(xiàn)的。與標(biāo)準(zhǔn)的IO相比,NIO提供了一種與I/O不同的工作方式。NIO采用內(nèi)存映射文件的方式來(lái)處理輸入/輸出,它將文件或文件的一段區(qū)域映射到內(nèi)存中,這樣就可以像訪問(wèn)內(nèi)存一樣來(lái)訪問(wèn)文件了。

在標(biāo)準(zhǔn)IO中,使用的是字節(jié)流和字符流,而在NIO中,使用的是通道(Channel)和緩沖區(qū)(Buffer)。數(shù)據(jù)總是從通道讀入緩沖區(qū),或從緩沖區(qū)寫入通道。

在Java API中,與NIO相關(guān)的包介紹如下:

● java.nio:主要包含各種與Buffer相關(guān)的類。

● java.nio.channels:主要包含與Channel和Selector(多線程相關(guān)選擇器)相關(guān)的類。

● java.nio.channels.spi:主要包含與Channel相關(guān)的服務(wù)提供者編程接口

● java.nio.charset:主要包含與字符集相關(guān)的類。

● java.nio.charset.spi:主要包含與字符集相關(guān)的服務(wù)提供者編程接口。

NIO主要有三大核心部分:Buffer、Channel和Selector。其中Buffer可以被看成是一個(gè)容器,其本質(zhì)是一個(gè)數(shù)組緩沖區(qū),讀入或?qū)懗龅紺hannel中的所有對(duì)象都會(huì)先放在Buffer中;Channel是對(duì)傳統(tǒng)的輸入/輸出的模擬,在NIO中,所有的數(shù)據(jù)都需要通過(guò)通道流的形式傳輸;Selector(選擇器)用于監(jiān)聽多個(gè)通道的事件(例如:連接打開、數(shù)據(jù)到達(dá)等),主要用于多線程處理。






猜你喜歡:

O和NIO的區(qū)別有哪些?NIO的優(yōu)點(diǎn)

如何通過(guò)NIO實(shí)現(xiàn)群聊?【黑馬程序員】

Java的語(yǔ)法格式是什么?有哪些注意事項(xiàng)

傳智教育Java高手班培訓(xùn)

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!