有多少人不知道 LinkedBlockingQueue的stream遍历方式,多线程下可能会出现死循环

vic1年前 ⋅ 991 阅读

如果面试的时候有人问你,LinkedBlockingQueue 是线程安全的吗?

你千万不要马上回答,是!

因为在有些情况下,它是会死循环的。。。

先说结论把: 这是JDK(1.8.0_261) 的 一个bug。

文章很长 分析了具体的前因后果,解决办法是升级一下JDK就好了。

你还知道JDK哪些重大BUG欢迎留言讨论~

 

https://mp.weixin.qq.com/s?__biz=MjM5NTY1MjY0MQ==&mid=2650855195&idx=4&sn=d8fc0d46b11958f935b17e3f94906033&chksm=bd0142558a76cb430e1733d914ddc91ffd06b60b32fea3207143b20ca9f3b5e90fcfb505684b

https://isenninha.github.io/2021/03/06/LinkedBlockingQueue-infinite-loop/

是有这个bug,以前用ConcurrentHashMap的时候也遇到过一个什么bug,具体也忘了, @margery 是由于key的hashcode相同导致的 @margery jdk8的bug 尽量不要在ConcurrentHashMap#computeIfAbsent里面使用递归操作 jdk9以后有修复这个bug, https://www.modb.pro/db/217578

全部评论: 0

    相关推荐