java channel

作者:原创时间:2022-03-25
文档

java channel是什么,让我们一起了解一下?

Channel是通道的意思,表示IO源与目标打开的连接,类似于传统的“流”,但是Channel不能直接访问数据,需要和缓冲区buffer进行交互。

打个比喻:山西有煤,山东想要,于是乎建了一条铁路连通到山东,这条铁路就是这里的"Channel",那么煤通过什么运过来呢?铁路建好了,就差火车了,因此这里的火车就像是缓冲区,火车把山西的煤运到山东来,把我们这里的钱运过去,这样双向传输就愉快的完成了。Channel类似于传统的“流”,只不过Channel不能直接访问数据,Channel只能与buffer交互。而且流是单向的,分为输入流和输出流, 但是通道是双向的,通过缓冲区buffer两边都可达,Channel表示IO源与目标打开的连接。

获取通道的方式有哪些?

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

以上就是小编今天的分享了,希望可以帮助到大家。

显示全文
java charat java charsequence java charset java cipher java class java class.forname java classloader java clob java clone() java collect java collections java color java combobox java comet 山楂干泡水最佳搭配 java commandline java comparable接口 java compiler java config java console iPad怎么重启 java cglib 平板如何录屏 java ceiling java callback java calendar获取当前时间 苹果13怎么开机 java calculate java byte取值范围 java bytebuffer java bundle java build.gradle java bufferedoutputstream java bufferedimage wps怎么求和 java break java blob java bit 如何清理win10电脑c盘 java binlog