请稍等 ...
×

采纳答案成功!

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

为什么selector.select()和下面的注册会出现线程安全问题

老师 为什么selector.select()和下面的注册会出现线程安全问题

正在回答

1回答

selector.select()

内部会占用队列锁,然后去阻塞获取消息,直到有新消息到达;而注册或取消注册会更改队列,所以两个都需要操作到同一个锁,所以存在竞争问题。

0 回复 有任何疑惑可以回复我~
  • 提问者 慕瓜2362174 #1
    老师  那意思就是用同步的写法让注册到获取按照顺序来  防止多个线程无序的去竞争是吗
    回复 有任何疑惑可以回复我~ 2022-07-02 00:33:45
  • Qiujuer 回复 提问者 慕瓜2362174 #2
    课程的处理是这样的,其实本质上并不是竞争的问题,selector比较特殊,selector.select()会占用锁,不释放,如果没有新的内容到达就不会被唤醒;从而导致其他的注册操作没法进行;所以只能唤醒。
    回复 有任何疑惑可以回复我~ 2022-07-06 22:42:11
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

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

帮助反馈 APP下载

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

公众号

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