クラス内のこのコードを想像してみてください。とをそれぞれval
呼び出す別のスレッドで値を変更しようとしています。method1
method2
val
異なるオブジェクトを使用して同期している場合、変更が別のスレッドで表示されると予想されますか? また、設計するのに適したテスト ケースは何でしょうか?
private Object lock1 = new Object();
private Object lock2 = new Object();
private int val = 0;
public void method1 () {
synchronized (lock1) {
System.out.println(val);
val = 1;
}
}
public void method2 () {
synchronized (lock2) {
System.out.println(val);
val = 2;
}
}