您的两种方法都应该有效,但是我不认为锁定类是推荐的做法。最好锁定的实例
Object,或使用适当的锁定
java.util。另外,请勿锁定
String。
或者,你可以让类的实例
Class1和
Class2实例化过程中可以采取锁定为参数:
class Class1 { private final Object lock; public Class1( Object lock ) { this.lock = lock } public method() { synchronize( lock ) { } ); }然后确保你创建 一个 锁(含
new Object()),并把它传递给的两个实例
Class1和
Class2。
因此,基本上,您将原始问题分解为两个部分:1)两个类不共享任何全局静态的东西,它们只接收一个参数。2)的客户端
Class1,并
Class2必须通过正确的锁。的客户,
Class1并
Class2充当“协调者”。



