В Java, идиоматический способ объявления критических разделов в коде выглядит следующим образом:
private void doSomething() {
// thread-safe code
synchronized(this) {
// thread-unsafe code
}
// thread-safe code
}
Почти все блоки синхронизируются на this
, но есть ли для этого конкретная причина? Существуют ли другие возможности? Существуют ли какие-либо рекомендации по тому, какой объект синхронизируется? (например, частные экземпляры Object
?)