博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
4、NIO--通道的原理和获取
阅读量:6305 次
发布时间:2019-06-22

本文共 795 字,大约阅读时间需要 2 分钟。

 

通道(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()

 

转载于:https://www.cnblogs.com/Mrchengs/p/10822898.html

你可能感兴趣的文章
2016 UESTC Training for Data Structures 题解
查看>>
__weak 和 __block 区别
查看>>
重建二叉树(中后序求前序)
查看>>
一个简单的MVC模式练习
查看>>
过度使用DBLINK做系统集成会带来的问题
查看>>
17.在Action获取Scope对象
查看>>
iOS开发--QQ音乐练习,旋转动画的实现,音乐工具类的封装,定时器的使用技巧,SliderBar的事件处理...
查看>>
磁盘 I/O 性能监控指标和调优方法
查看>>
上传图片时获取到上传图片的长和宽
查看>>
显示表的建表语句
查看>>
Memcached集群/分布式/高可用 及 Magent缓存代理搭建过程 详解
查看>>
[转] 微软源代码管理工具TFS2013安装与使用详细图文教程(Vs2013)
查看>>
产品经理该如何为某个行业设计产品?
查看>>
Linux内核同步机制--自旋锁【转】
查看>>
微服务在实际生产中的 5 个挑战
查看>>
Delphi 操作Flash D7~XE10都有 导入Activex控件 shockwave
查看>>
Go语言类型转换库【github.com/demdxx/gocast】的用法
查看>>
实验吧Web-FALSE
查看>>
json转换为键值对辅助类
查看>>
aaaa
查看>>