首页 > 代码库 > java nio
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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。