次のコードがあるとします。
class MyClass {
synchronized void myMethod1() {
//code
}
synchronized void myMethod2() {
//code
}
}
ここで、個別のデータmyMethod1()
にアクセスするとします。myMethod2()
ここで、スレッド A 呼び出しのみmyMethod1()
とスレッド B 呼び出しのみの 2 つのスレッドがある場合myMethod2()
。
スレッド A が実行中の場合、同じデータにアクセスしなくても、myMethod1()
スレッド B は待機をブロックし、その理由はありませんか? myMethod2()
私の知る限り、同期されたメソッドは、this
インスタンスメソッドにはオブジェクトのモニターを使用し、MyClass.class
静的関数にはオブジェクトのモニターを使用します。