Java的NIO之通道channel详解

 更新时间:2023年10月24日 10:06:28   作者:不等风雨,只等你  
这篇文章主要介绍了Java的NIO之通道channel详解,通道channel由java.nio.channels 包定义的,Channel 表示IO源与目标打开的连接,Channel类类似于传统的"流",只不过Channel本身不能直接访问数据,Channel只能与Buffer进行交互,需要的朋友可以参考下

通道(channel)

通道(channel):由java.nio.channels 包定义的。

Channel 表示IO源与目标打开的连接。

Channel类类似于传统的“流”。只不过Channel本身不能直接访问数据,Channel只能与Buffer进行交互。

jvm数据传输的发展

第一阶段:由CPU直接处理和管理IO接口并进行数据传输。

在这里插入图片描述

第二阶段:引入寄存器DMA(流的概念引入),在需要使用IO操作的时候,由寄存器DMA向CPU申请,然后再由寄存器统一管理IO接口,实现数据传输。

在这里插入图片描述

第三阶段:寄存器DMA换成通道Channel,通道独立开来不由CPU管,也不需要申请权限,只有由其对IO接口进行处理和管理,然后实现数据传输。

在这里插入图片描述

Java为Channel接口提供的最主要实现类如下:

  1. FileChannel : 用于读取、写入、映射和操作文件的通道
  2. DatagramChannel : 通过 UDP 读写网络中的数据通道。
  3. SocketChannel : 通过 TCP 读写网络中的数据。
  4. ServerSocketChannel : 可以监听新进来的 TCP 连接,对每一个新来进来的连接都会创建一个 SocketChannel。

获取通道

获取通道的一种方式是对支持通道的对象调用getChannel() 方法。支持通道的类如下:

  1. FileIputStream
  2. FileOutputStream
  3. RandomAccessFile
  4. DatagramSocket
  5. Socket
  6. ServerSocket 获取通道的其他方式是使用 Files 类的静态方法 newByteChannel()获取字节通道。或者通过通道的静态方法open() 打开并返回指定通道。

FileChannel的常用方法

在这里插入图片描述

到此这篇关于Java的NIO之通道channel详解的文章就介绍到这了,更多相关Java通道channel内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java基于C/S模式实现聊天程序(服务器)

    java基于C/S模式实现聊天程序(服务器)

    这篇文章主要为大家详细介绍了java基于C/S模式实现聊天程序的服务器篇,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • java实现文件压缩成zip的工具类

    java实现文件压缩成zip的工具类

    这篇文章主要为大家详细介绍了java实现文件压缩成zip的工具类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • 详解Java LinkedHashMap与HashMap的使用

    详解Java LinkedHashMap与HashMap的使用

    这篇文章主要通过几个示例为大家详细介绍了Java中LinkedHashMap与HashMap的常见使用和概述,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2022-10-10
  • Java实现五子棋的基础方法

    Java实现五子棋的基础方法

    这篇文章主要为大家详细介绍了Java实现五子棋的基础方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-09-09
  • 深度剖析java动态静态代理原理源码

    深度剖析java动态静态代理原理源码

    这篇文章主要介绍了深度剖析java动态静态代理原理源码,关于Java中的动态代理,我们首先需要了解的是一种常用的设计模式--代理模式,而对于代理,根据创建代理类的时间点,又可以分为静态代理和动态代理。,需要的朋友可以参考下
    2019-06-06
  • SpringBoot中的Bean装配详解

    SpringBoot中的Bean装配详解

    Spring IoC 容器是一个管理 Bean 的容器,在 Spring 的定义中,它要求所有的 IoC 容器都需要实现接口 BeanFactory,它是一个顶级容器接口,这篇文章主要介绍了SpringBoot中的Bean装配详解,需要的朋友可以参考下
    2024-04-04
  • Java利用redis实现防止接口重复提交

    Java利用redis实现防止接口重复提交

    本文主要为大家详细介绍了Java如何利用redis实现防止接口重复提交,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-11-11
  • Java使用poi导出ppt文件的实现代码

    Java使用poi导出ppt文件的实现代码

    Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java对Microsoft Office格式档案读和写的功能。本文给大家介绍Java使用poi导出ppt文件的实现代码,需要的朋友参考下吧
    2021-06-06
  • Intellij IDEA神器居然还有这些小技巧

    Intellij IDEA神器居然还有这些小技巧

    Intellij IDEA真是越用越觉得它强大,它总是在我们写代码的时候,不时给我们来个小惊喜,本文给大家主要介绍一些你可能不知道的但是又实用的小技巧,感兴趣的朋友跟随小编一起看看吧
    2021-01-01
  • java实现学生教师管理系统

    java实现学生教师管理系统

    这篇文章主要为大家详细介绍了java实现学生教师管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-10-10

最新评论