Обратите внимание, что в этом примере, если call()
не является частным или вызывается откуда-то еще в классе, кто-то другой может прервать то, что вы считаете полностью синхронным процессом.
synchronized void a(){
println 'hello'
b();
println 'world'
}
void b(){
}
Если вы ожидаете, что «все, что делает a, будет охраняться синхронизированным», то, если b имеет какие-либо побочные эффекты, эта гарантия теряется, если методы, отличные от synchronized void a
, вызывают b
.