我有一个带有同步方法的类:
class A {
synchronized void method1() {};
synchronized void method2() {};
}
如果某个客户端类想要调用,method1()
那么method2()
知道这些调用是原子的
第一种情况:
class B {
A a;
public void foo() {
synchronized(a) {
a.method1();
a.method2();
}
}
}
第二种情况:
class B {
A a;
final Object lock = new Object();
public void foo() {
synchronized(lock) {
a.method1();
a.method2();
}
}
}
有什么理由我应该使用一个案例而不是另一个案例?