List synchronizedList=new Collections.synchronizedList(new ArrayList());
synchronized (synchronizedList) {
    if (synchronizedList.size() > 0) {
        System.out.println(synchronizedList.get(0));
    }
}


对于上面的代码,我们首先检查然后执行操作。我们可以使用CopyOnwriteArrayList来实现此功能而不进行检查然后执行操作。

最佳答案

一言以蔽之。甚至CopyOnWriteArrayList都没有提供原子操作来检查列表中是否存在某个元素,并在其上执行某些代码,例如Map的接口computeIfPresent。长话短说-您必须自己实现该逻辑,就像您在问题的摘要中所做的一样。

09-28 07:15