Вот короткие немного текста из Oracle Java Tutorials:Почему имяList.add не синхронизировано?
«Синхронные заявления
Другим способ создания синхронизированных коды с синхронизированным заявлением. В отличии от синхронизированных методов, синхронизированные заявления необходимо указать объект, который обеспечивает внутреннюю блокировку:
public void addName(String name) {
synchronized(this) {
lastName = name;
nameCount++;
}
nameList.add(name);
}
В этом примере метод addName необходимо синхронизировать изменения в LastName и nameCount, но также необходимо, чтобы избежать синхронизирующих вызовов других объектов методы. (Вызов методов других объектов из синхронизированного кода может создавать проблемы, описанные в разделе «Личность».) Без синхронизированных инструкций должен быть отдельный, несинхронизированный метод с единственной целью вызвать nameList.add. »
Я понимаю их точку зрения о гибкости Synchronized дает. Но почему Oracle решил, что имяList.add не нужно синхронизировать? В более общем плане, как я могу определить, какие методы объектов нужно синхронизировать, а какие нет?
Что такое 'nameList'? –