27、Nio(selector(cancel(事件取消)))

本文探讨了NIO中的Selector如何处理客户端连接请求。当选择器监听到连接请求但不进行处理时,服务会保持非阻塞状态。Select方法的逻辑是,已处理的事件不会再次触发,未处理的事件会通过SelectorKeys集合继续处理。若要取消事件,可以调用key.cancel()。这样,服务可以从非阻塞状态中恢复。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Nio(selector(cancel(事件取消)))

第一步:当我监听到客户端的连接请求了,但是我们不进行连接(也就是不进行处理)。那么这个服务又陷入了一个非阻塞(线程一直运行)

 

第二步:剖析select方法(select的逻辑是,若是这个事件已经被处理过了,那么下次就需要新事件了。没有新事件仍然会阻塞(变为阻塞态),但是若是这个事件没有被处理,那么这个select就又会将这这个为处理的selectorkeys这个集合让线程继续处理(进入下面的扫描集合循环))select后这个事件要么处理,要么取消canel(事件取消也就是key.canel)。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值