Java NIO学习总结

1、NIO的概念
从jdk1.4开始就出现非阻塞式(non-blocking)IO,是基于通道(channel)和缓冲区(buffer)进行操作
内部设置两个缓冲区(发送区、接收区)和高速通道
两个缓冲区:发送区、接收区
高速通道:封装了Socket


2、NIO的模式
数据从高速通道中出来,都会进入接收池,再由发送池通过高速通道返回
由客户端在selector注册事件,由线程不断轮询事件
selector:基本事件注册器:op_accept(监听)、op_connect(连接)、op_read(读取)、op_write(写入)
线程轮询selector注册器事件,通过selector key返回集合


3、五种模型
阻塞IO(Blocking IO)
非阻塞IO(non-Blocking IO)
多路复用IO(multiplexing IO)
信号驱动式IO(signal-driven IO)
异步IO(asynchronous IO)


4、NIO核心组成部分
channel:高速通道
ServerSocketChannel:通过自身静态工厂方法创建实例,封装了ServerSocket,属于Blocking IO模式,一般不会直接拿ServerSocket直接监听端口
configureBlocking:高速通道只有在阻塞式才能用,非阻塞式不能用,所以此属性需要设置为false,能才使用阻塞


Selector多路注册器:通过自身静态工厂方法创建实例,通过selectorKey.op_accept在高速通道register注册事件到SocketChannel上,注册完成后,线程在四大事件轮询,上获取set集合
selectorKey包含Channel和Selector


5、具体方法说明
selectionKey.interestOps:奖此对应的channel设置为准备接受其它客户端的事件类型
register:在该channel上注册事件,为selectionKey下次轮询的事件


6、注意事项:
服务器端的SelectionKey不能用异步处理,如果异步处理,没有注册其它键会循环遍历重复的key
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值