Если у меня есть что-то вроде этого 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'. И [ответы] (http://stackoverflow.com/a/9468329/1743880) также охватывают эту точку: * Если блок выполняет несколько операций в списке [...], тогда синхронизированный не лишний * – Tunaki