1
我有一个java.util.concurrent.ConcurrentHashMap
,我想如果它不存在,但如果有东西存在,我想也删除它。例如:ConcurrentHashMap#putIfAbsent但删除项目如果存在
ConcurrentHashMap<K, V> map = new ConcurrentHashMap<>();
// ...
V value = map.putIfAbsent(k, new V(/* ... */));
if (value != null) {
map.remove(k);
}
除了当然我希望它是线程安全的。
有没有干净的方法来做到这一点?或者我应该只使用HashMap
并同步访问?
我的理解是,update operations are synchronized anyway,我不希望有显着的锁争用,所以添加更多的同步并不是什么大不了的事。