NIO——03通道Channel

一、IO的进化史
 ①起初系统的IO由CPU负责,在IO频繁的时候CPU资源不能被充分利用
在这里插入图片描述
 ②后来,有了DMA(直接存储器),当有IO操作时DMA先向CPU申请权限,DMA申请到权限后全权负责IO操作,这样CPU就可以去完成其他的操作,这就是传统的IO模式,但这种方式下当应用程序有大量的频繁的IO操作时,会导致DMA冲突
在这里插入图片描述
 ③使用通道专门负责IO,通道是一个完全独立的处理器,不需要向CPU申请权限,这样就可以大大提高CPU的利用率
在这里插入图片描述
二、通道Channel
 通道Channel,由 java.nio.channels 包定义,表示源节点与目标节点的连接。Channel 类似于传统的“流”,只不过 Channel 本身不直接访问数据,只能与 Buffer 配合进行数据传输。
 Channel的主要实现类如下:
  FileChannel:负责本地文件的传输
  SocketChannel:负责网络文件的传输
  ServerSocketChannel:负责网络文件的传输
  DatagramChannel:负责网络文件的传输
 获取通道的方式:
  1、Java针对支持通道的类提供了getChannel()方法,支持通道的类有:

FileInputStream
FileOutputStream
RandomAccessFile
Socket
ServerSocket
DatagramSocket

  2、通过通道的静态方法 open() 打开并返回指定通道
  3、使用 Files 类的静态方法 newByteChannel() 获取字节通道

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值