Seine Methode von CopyOnWriteArrayList.classCopyOnWriteArrayList synchronisierte Methoden
public synchronized boolean set(E e) {
Object[] newElements = elements.clone();
@SuppressWarnings("unchecked")
E result = (E) newElements[index];
newElements[index] = e;
elements = newElements;
return result;
}
Ok, lässt ich habe sagen
final List<MyType> list = new CopyOnWriteArrayList();
und ich habe Methode
public void update(Task task) {
synchronized (tasksList) {
int index = tasksList.indexOf(task);
validateIndex(index);
tasksList.set(index, task);
}
}
Ich dachte, als CopyOnWriteArrayList synchronisierte Methode " eingestellt "on (this)
In meiner Methode blockierte ich meine Liste (synchronisierte (tasksList)) warum die Methode funktioniert. Ich dachte, Zeile (tasksList.set (index, task);) wird nicht funktionieren, da tasksList bereits blockiert Linie über