如果我有这样的事情snippet-同步同步列表
public List<E> list = Collections.synchronizedList(new ArrayList<E>());
然后,如果我做的方法中的一些操作 -
boolean absent = !list.contains(x); // Statement 1
if(absent) // Statement 2
list.add(x); // Statement 3
做我需要包装内synchronized(list){ ... }
上述语句进行操作atomic
?
我不认为这个问题是链接给出的倍数。这一个请求同步列表中的代码块,而另一个则是同步单个方法调用。即使他们的答案是不同的(必要的,而不是其他的)。 – uoyilmaz
@uoyilmaz这是一个规范,涵盖了使用'synchronized'和'synchronizedList'方法的用例。和[answers](http://stackoverflow.com/a/9468329/1743880)也涵盖了这一点:*如果该块在列表上执行多个操作[...],那么同步并不是多余的* – Tunaki