请稍等 ...
×

采纳答案成功!

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

IoSelectorProvider 中inputCallbackMap的线程安全性

在注册读事件时,会往inputCallbackMap放入callback,而监听读事件时,会从inputCallbackMap里get到callback进行执行,这样不同线程操作同一个inputCallbackMap会有线程安全性问题吗?

正在回答 回答被采纳积分+3

1回答

Qiujuer 2019-07-09 20:53:06

inputCallbackMap 本身不是线程安全的,所以会有线程安全问题。

这里的线程安全出现在添加和移除的时候,如果是调度部分去get的时候往往不会(极小概率)触发线程安全问题了。

而在添加和移除部分我们是有一个外部的锁,这个锁可以帮助我们完成线程同步问题。所以实际运行起来是没有你说的线程安全问题的。



在后面的部分我们还有很多次的更新和优化的哈。逐渐暴露问题,然后解决问题。


0 回复 有任何疑惑可以回复我~
  • 老师,那这里为什么不用 synchronized(this),然后 map 用 ConcurrentHashMap 呢?最近对并发有点模糊,又重新看了遍
    回复 有任何疑惑可以回复我~ 2019-09-25 10:05:02
  • 懂了懂了,还有上面的 waitSelection 配合,哈哈
    怎么办,就算有了思路,重新写还是没想到啊 - -
    回复 有任何疑惑可以回复我~ 2019-09-25 10:10:41
  • Qiujuer 回复 LillteZheng #3
    这种只能慢慢来喽,我都不能保证一下就写出最后的代码的,都是写一步,然后看一步。如果有错就改正一点点完善来着。
    
    多写就是最好的老师。
    回复 有任何疑惑可以回复我~ 2019-09-26 09:53:38
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信