Java Howto синхронизируется по группе методов - PullRequest
1 голос
/ 29 марта 2011

У меня есть три метода, которые все обращаются к одним и тем же файлам в папке.Я использую PersistenceStrategy com.thoughtworks.xstream.persistence.XmlArrayList

Дело в том, что многие потоки могут писать, читать, удалять любым из четырех методов, все из которых синхронизированы.Синхронизированный не останавливает READ от одного метода, сталкивающегося с WRITE в другом методе, так как оба метода индивидуально синхронизированы.

Думал ли я поместить их всех в класс и каким-то образом синхронизировать по классу?

Есть идеи?

1 Ответ

4 голосов
/ 29 марта 2011

синхронизация на экземпляре MyClass.class является приемлемой, но во многих случаях предпочтительнее использовать закрытую блокировку, а не что-то, к чему можно получить доступ извне. Поэтому вы можете создать закрытый конечный (статический, если требуется) экземпляр и заблокировать его в синхронизированных блоках.

private final Object lock = new Object();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...