我试图追踪竞争状况,所有迹象似乎都指向了ConcurrentHashMap.putIfAbsent().是否有可能如果2个线程putIfAbsent()使用相同的密钥调用空映射,两者都可以进行查找以查看密钥是否仍然存在,那么两个线程都会尝试添加它?出于某种原因,当我第一次开始使用时,putIfAbsent()我认为呼叫不需要同步.但是现在我看不出如果时机合适,它会如何阻止两个线程添加它们的值.我无法在生产之外重现这一点.
谢谢
java concurrency multithreading synchronization concurrenthashmap