想象一下这个代码片段。我们正尝试在分别调用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;
}
}
答案 0 :(得分:1)
获取和发布不同的监视器之间没有发生过 - 之前的关系,因此无法保证何时可以看到更改。