以前寫(xiě)過(guò)一篇Java Socket的用法,不過(guò)覺(jué)得介紹的不夠細(xì)致也不夠全面,因此今天想在細(xì)談一下Java NIO,也算是對(duì)上一篇博客的補(bǔ)充吧。在以前的博客中提到Java NIO的三個(gè)核心部分Buffers、Channels、Selectors,這里不再贅述三者之間的關(guān)系,接下來(lái)我們重點(diǎn)看看這三個(gè)核心部分。

Buffer

  該區(qū)域本質(zhì)是一塊可以讀寫(xiě)的數(shù)據(jù)的內(nèi)存區(qū),這組內(nèi)存區(qū)被包裝成NIO Buffer對(duì)象,并提供了一組方法,方便訪(fǎng)問(wèn)該塊內(nèi)存。為了更清楚的理解Buffer的工作原理,需要熟悉它的三個(gè)屬性capacity、position、limit。capacity表示緩沖區(qū)大小。而position和limit的含義取決于Buffer處在讀模式還是寫(xiě)模式下。在讀模式下,position表示開(kāi)始讀的位置,limit表示最后能讀的數(shù)據(jù)位置。在寫(xiě)模式下,position表示當(dāng)前數(shù)據(jù)需要寫(xiě)入的位置,最大值為capacity-1。當(dāng)由寫(xiě)模式切換到讀模式時(shí),position=0,limit=position。

  抽象類(lèi)Buffer具體實(shí)現(xiàn)類(lèi)有ByteBuffer、MappedByteBuffer、CharBuffer、DoubleBuffer、FloatBuffer、IntBuffer、LongBuffer、ShortBuffer。接下來(lái)我們以ByteBuffer為例來(lái)了解一下Buffer的具體用法。

移動(dòng)開(kāi)發(fā)培訓(xùn),Android培訓(xùn),安卓培訓(xùn),手機(jī)開(kāi)發(fā)培訓(xùn),手機(jī)維修培訓(xùn),手機(jī)軟件培訓(xùn) View Code

Channels

網(wǎng)友評(píng)論