Учитывая этот пример класс:Изменения переменного экземпляра из несинхронизированного/синхронного контекста
class Example {
String str = "";
public synchronized boolean foo() { str = "foo"; }
public boolean bar() { str = "bar"; }
public synchronized boolean baz() { str = "baz"; }
}
С этого post, то ясно, что любой поток может вызвать метод bar
. Скажем, нить T1
посередине выполнения foo()
и нить. T2
звонки bar()
. Может bar()
переназначить str
, хотя foo
приобрел замок? Как насчет того же вопроса, если baz
вызывается T2
, хотя T2
находится в середине выполнения foo
?