dromara / hutool

🍬A set of tools that keep Java sweet.
https://hutool.cn
Other
29.24k stars 7.53k forks source link

Singleton#get 碰到个偶现的问题 #3749

Closed refeccd closed 2 months ago

refeccd commented 2 months ago

jdk 21 hutool 6.0.0-M16

image

https://blog.csdn.net/wu_weijie/article/details/129289929

looly commented 2 months ago

@refeccd JDK9+确实有这个问题。

就是hash碰撞了,见:https://bugs.openjdk.java.net/browse/JDK-8161372

JDK8一旦hash碰撞直接死循环,所以有了SafeConcurrentHashMap,JDK9+解决了死循环的bug,当然解决办法就是直接抛出异常。

refeccd commented 2 months ago

这个是hash冲突吗? 一个是 ClientEngine.class.getName() 一个是 LogEngine#getName() + clazz.getName() 应该冲突的可能性比较小吧