采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师这个key!=null 说明 已经注册了, key.interestOps(key.readyOps() | registerOps); 这个不明白是什么意思 已经注册了,不去管他不就行了
这里的意思是这样:
一个channel可以在一个selector上进行多次不同的注册,其行为包括:读监听、写监听... 等
而且其多次注册其实等效于在更改同一个值;这个值是一个int值,其使用不同的位来标记不同的注册状态。
我们设想这样一个场景:
channel已经注册了:读监听
现在需要注册写监听:如果直接去注册一个写监听,则会把之前的监听状态给覆盖了,也就等效于只剩下:写监听了
要解决,则需要判断之前是否有注册过,如果有,那么我们使用位操作,将当前需要注册的状态合并进去:写监听 | 读监听
这样就实现了增加操作,而不是一次覆盖操作。
登录后可查看更多问答,登录/注册
理论+实践,系统且深入掌握Socket核心技术,从容应对各种Socket应用场景的不二之选
3.2k 1
2.2k 7
2.0k 5
2.4k 13
1.4k 13
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号