java nio
Posted 风儿飞
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java nio相关的知识,希望对你有一定的参考价值。
Java NIO与IO的区别:传统的IO中需要为每个连接建立一个线程,当并发数量巨大时,对内存及线程切换的开销巨大,NIO提供线程池,不再为每个连接建立单独的线程,提供了非阻塞的能力。
1、Java NIO的核心组件:
Channels:所有的IO在NIO中都从一个Channel开始,Channel有点像流,数据可以从Channel读到Buffer,也可以从Buffer读到Channel
Buffers
Selectors:允许单个线程处理多个Channel
2、Channel:通道
(1)Java NIO的通道类似流,可以从通道中读取数据到Buffer,也可以将Buufer中的数据写入Channel,可以异步读写。
(2)Channel实现:
FileChannel:从文件中读写数据
DatagramChannel:能通过UDP读取网络中的数据
SocketChannel:能通过TCP读取网络中的数据
ServerSocketChannel:监听新进来的TCP连接,对每一个新进来的连接都会创建一个SocketChannel
3、Buffer:用于和通道进行交互,本质上是一块可以进行数据读写的内存,有3个重要的属性:
(1)capacity:Buffer的容量、大小
(2)position:数据读写的当前位置
(3)limit:写模式下limit等于capacity,读模式下limit为写入数据的大小
4、Selector:能够检测一到多个通道,并能够知晓通道是否为读写做好准备的组件,这样一个单独的线程可以管理多个通道。
以上是关于java nio的主要内容,如果未能解决你的问题,请参考以下文章