1
3
您不同步构造函数,这在语义上没有任何意义,而是同步对变量的访问。这可以从任何可以访问它的地方发生。
在这种情况下,您需要的是
|
2
0
你可能已经掌握了逻辑,但只想再提一次。当您同步一个方法(可能是构造函数)时,它会在“this”对象上创建锁,该对象仍然未初始化且为空,以防您尝试同步构造函数。但是您可以创建一个单独的实例对象,并对该对象使用锁。很可能是您试图使用的实例变量,因为锁也尚未初始化。在这种情况下,您将得到NP异常。 现在,重要的是来自Java6的最终实例变量是线程安全的,所以用户可以使用最终对象来锁定构造函数。 如果您正在锁定XYD.class,那么它将是应用程序锁,这在您的情况下可能有效,但有时您需要实例级锁,在这种情况下,您可以使用上述方法。
对 |
Vincent · 空的默认构造函数和成员初始化 9 年前 |
WileTheCoyot · 了解隐式声明的默认构造函数 10 年前 |
user2975787 · Java构造函数看起来不像它应该的样子 10 年前 |
Raj · 如何使构造函数同步? 10 年前 |