首页 > 编程语言 > 详细

java nio

时间:2016-11-10 14:02:48      阅读:147      评论:0      收藏:0      [点我收藏+]

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

原文:http://www.cnblogs.com/zhli/p/6050330.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!