首页 > 其他 > 详细

NIO

时间:2020-04-05 01:00:10      阅读:63      评论:0      收藏:0      [点我收藏+]

前言

NIO用于数据传输,应对高并发场景,主要组件包括:Buffer、Channel、Selector;IO(BIO)的缺点如下:

1. BIO是单线的流,客户端请求服务端需要创建两次流,效率低;

2. 一对一连接,每一个客户端都需要一个服务端线程来处理,并发大的时候,服务器会产生大量线程,导致效率低,甚至崩溃;

3. 客户端连接之后,即使不产生任何操作,也会占用服务器端线程的占用,浪费资源;

Buffer

buffer即为缓冲区,用于数据存储,底层用数组存储,存储的元素类型为基本类型,Buffer针对JAVA8个基本数据类型,提供了7个子类型(除了boolean类型)

因为boolean类型可以通过规定1为true,0为false来实现存储boolean类型,不影响使用,7个子类型最常用的是byteBuffer,因为计算机数据传输以字节形式;

参数

capacity: 容量位,记录缓冲区的容量,初始化指定后不可变;

limit: 限制位, 用于标记操作位能到达的最大位置,新建一个buffer,limit默认在最后一位,和capacity指向同一个位置;

position: 操作位,指向操作的位置,默认在第零位

mark:标记位,用于数据的校验,在java中mark位默认不启用,值为-1;

技术分享图片

Channel

 

Selector

NIO

原文:https://www.cnblogs.com/oxygenG/p/12635464.html

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