想象一下类中的这段代码。我们试图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;
}
}