List synchronizedList=new Collections.synchronizedList(new ArrayList());
synchronized (synchronizedList) {
if (synchronizedList.size() > 0) {
System.out.println(synchronizedList.get(0));
}
}
对于上面的代码,我们首先检查然后执行操作。我们可以使用CopyOnwriteArrayList来实现此功能而不进行检查然后执行操作。
最佳答案
一言以蔽之。甚至CopyOnWriteArrayList
都没有提供原子操作来检查列表中是否存在某个元素,并在其上执行某些代码,例如Map
的接口computeIfPresent
。长话短说-您必须自己实现该逻辑,就像您在问题的摘要中所做的一样。