码迷,mamicode.com
首页 > 编程语言 > 详细

java nio

时间:2016-11-10 14:03:18      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:本质   cto   tcp   file   容量   capacity   pac   异步   管理   

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

标签:本质   cto   tcp   file   容量   capacity   pac   异步   管理   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!