请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

registerSelection 注册问题

图片描述
老师这个key!=null 说明 已经注册了, key.interestOps(key.readyOps() | registerOps); 这个不明白是什么意思
已经注册了,不去管他不就行了

正在回答

1回答

这里的意思是这样:

一个channel可以在一个selector上进行多次不同的注册,其行为包括:读监听、写监听... 等

而且其多次注册其实等效于在更改同一个值;这个值是一个int值,其使用不同的位来标记不同的注册状态。

我们设想这样一个场景:

  1. channel已经注册了:读监听

  2. 现在需要注册写监听:如果直接去注册一个写监听,则会把之前的监听状态给覆盖了,也就等效于只剩下:写监听了

  3. 要解决,则需要判断之前是否有注册过,如果有,那么我们使用位操作,将当前需要注册的状态合并进去:写监听 | 读监听

这样就实现了增加操作,而不是一次覆盖操作。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号