zoukankan      html  css  js  c++  java
  • 4、NIO--通道的原理和获取

    通道(Channel)

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

    Channel 表示 IO 源与目标打开的连接。
    Channel 类似于传统的“流”。

    只不过 Channel 本身不能直接访问数据,Channel 只能与Buffer 进行交互。

    图解:

    传统的方式

    DMA:权限申请器

    DMA总线

    I/O流基于这种情况

    大量的操作也会频繁的向cpu申请资源,会造成总线冲突的问题

    最终也会影响cpu的性能

     

     通道的方式:

    是一个完全独立的处理器

    专门用于IO操作

    拥有一套自己命令

    附属于cpu

    不需要进行向cpu获取资源

    大型的io请求会比DMA请求较好

     

    通道(Channel)

    用于源节点与目标节点的链接

    在Java NIO中负责缓冲区中数据的传输

    Channel本身不存储数据

    因此只需要配合缓冲区进行传输

    通道的主要实现类:

    java.nio.channels,Channel接口

      --FileChannel:专门用于操作本地文件

      --SocketChannel:网络io

      --ServerSocketChannel:网络io

      --DatagramChannel:网络io

    获取通道:

    1、Java针对支持通道的类提供了getChannel()方法

      本地IO:

        FileInputStream、FileOutputStream、RandomAccessFile

      网络IO:

        Socket、ServerSocket、DatagramSocket

    2、JDK1.7 中的NIO2针对各个通道提供了一个静态的方法open()

    3、JDK1.7 中的NIO2的Files工具类的newByteChannel()

  • 相关阅读:
    jquery手写实现单页滚动导航
    小程序:商品分类,实现滑块视图
    微信小程序增加悬浮在线客服
    小程序 杂记
    自动售货机 扫描支付 原理
    HTTP的SSL 证书安装
    表达
    Linux 下svn恢复到某一版本
    倒车入库 技巧
    svn 杂记
  • 原文地址:https://www.cnblogs.com/Mrchengs/p/10822898.html
Copyright © 2011-2022 走看看