この例のクラスを考えると:
class Example {
String str = "";
public synchronized boolean foo () { str = "foo"; }
public boolean bar() { str = "bar"; }
public synchronized boolean baz() { str = "baz"; }
}
この投稿から、どのスレッドでもbar
メソッドを呼び出すことができることは明らかです。スレッドT1
が実行中foo()
とスレッドT2
呼び出しの途中にあるとしますbar()
。ロックを取得してもbar()
再割り当てできますか? が実行中なのにによって呼び出された場合、同じ質問はどうですか?str
foo
baz
T2
T2
foo