關閉→
當前位置:知科普>IT科技>channel - java

channel - java

知科普 人氣:2.82W

<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

java channel是什麼,讓我們一起了解一下?

Channel是通道的意思,表示IO源與目標打開的連接,類似於傳統的“流”,但是Channel不能直接訪問數據,需要和緩衝區buffer進行交互。

打個比喻:山西有煤,山東想要,於是乎建了一條鐵路連通到山東,這條鐵路就是這裏的"Channel",那麼煤通過什麼運過來呢?鐵路建好了,就差火車了,因此這裏的火車就像是緩衝區,火車把山西的煤運到山東來,把我們這裏的錢運過去,這樣雙向傳輸就愉快的完成了。Channel類似於傳統的“流”,只不過Channel不能直接訪問數據,Channel只能與buffer交互。而且流是單向的,分為輸入流和輸出流, 但是通道是雙向的,通過緩衝區buffer兩邊都可達,Channel表示IO源與目標打開的連接。

java channel

獲取通道的方式有哪些?

1、通過getChannel()方法獲取。

前提是該類支持該方法。支持該類的方法有:

FileInputStream/FileOutputStream,RandomAccessFile,Socket,ServerSocket ,DatagramSocket

2、通過靜態方法open()。

3、通過jdk1.7中Files的newByteChannel()方法。

java channel是如何實現的?

我們以AbstractChannel為例,通過提供一些公共API進行實現,比如localAddress()和 remoteAddress()方法,實現源碼如下:

public SocketAddress localAddress() {    SocketAddress localAddress = this.localAddress;    if (localAddress == null) {        try {            this.localAddress = localAddress = unsafe().localAddress();        } catch (Throwable t) {            // Sometimes fails on a closed socket in Windows.            return null;        }    }    return localAddress;}

TAG標籤:#java #channel #