目錄
NIO(一、概述)
NIO(二、Buffer)
NIO(三、Channel)
Channel
上文說了描述了Buffer的實現(xiàn)機制,那么這個章節(jié)就主要描述數(shù)據(jù)是如何進入緩沖區(qū)的,并且又是如何從緩沖區(qū)流出的。
類圖縱覽及核心類概述
這張圖只是簡單概括了Channel的類圖,當然,Channel的設計遠比這個更復雜:例如SelectableChannel還有SocketChannel和ServerSocketChannel的實現(xiàn),NetworkChannel繼承Channel并抽象了更多的方法;例如FileChannel,除了繼承AbstractInterruptibleChannel之外,還實現(xiàn)了GatheringByteChannel和ScatteringByteChannel接口。
Channel
我們可以看到,Channel接口本身定義了 close() 和 isOpen() 方法,在繼承Channel的接口中,又分別抽象了讀通道(ReadableByteChannel)、寫通道(WritableByteChannel)及可中斷的異步通道(InterruptibleChannel)接口。讀寫通道自然不必說,下文也會有介紹。InterruptibleChannel
這里說下InterruptibleChannel,這是一個可以被中斷的異步通道,繼承了 close() 方法。當一個線程在I/O被阻塞時,另一個線程執(zhí)行了close()方法,那么阻塞的線程會拋出&nb