天天看點

java.nio包的分析(二)---Channels分析

繼上一小節分析完Java.nio直接包下的Buffer,我們再來看看下面的一些包,自然就落到了Channels通道包的實作了。Channels包的作用可謂是其中的主要作用的展現了,可以用FileChannel實作雙向I/O,ServerChannel無阻塞的通信等等。首先亮出他的目錄結構。

java.nio包的分析(二)---Channels分析

還有相應的服務程式接口包中的一些類

java.nio包的分析(二)---Channels分析

我們先來看其中的檔案鎖類,避免多線程同時操作檔案

java.nio包的分析(二)---Channels分析

我們再來看看其中的FileChannel類時如何操作的,首先

java.nio包的分析(二)---Channels分析

下面我們再來看看其中的用于Socket的SelectKey類,nio下的socket與平時我們用的用法不同,他的事件需要我們先去注冊,相當于以事件通知的形式,裡面總共有4種類型

java.nio包的分析(二)---Channels分析

裡面還提供可一個可關聯的對象,也許是用來存儲什麼資訊的

java.nio包的分析(二)---Channels分析

說完SelectorKey,我們看看SocketChannel類,

java.nio包的分析(二)---Channels分析

還有另外一種形式

java.nio包的分析(二)---Channels分析

在這個包裡還有叫Channels類跟Channel類名字太容易記混了,channel 隻是一個interface,加了一個就是一個全新的類的,我們來看看其中的read()方法,

java.nio包的分析(二)---Channels分析

然後我們看看剛剛提到的一個提供類,叫SelectorProvider類,

java.nio包的分析(二)---Channels分析

或者通過構造函數的形式去取得

java.nio包的分析(二)---Channels分析

Channel明顯感覺是裡面最難懂的部分了,類最多,我隻能了解個大概吧,我隻能是帶領大家入個門。好,接下來分析nio中的最後一塊新大陸,Charset。

原文連結:

https://blog.csdn.net/Androidlushangderen/article/details/39753777