java - channel

来源:趣味经验馆 2.94W

<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;}

热门标签