![]() |
1
3
您不同步构造函数,这在语义上没有任何意义,而是同步对变量的访问。这可以从任何可以访问它的地方发生。
在这种情况下,您需要的是
|
![]() |
2
0
你可能已经掌握了逻辑,但只想再提一次。当您同步一个方法(可能是构造函数)时,它会在“this”对象上创建锁,该对象仍然未初始化且为空,以防您尝试同步构造函数。但是您可以创建一个单独的实例对象,并对该对象使用锁。很可能是您试图使用的实例变量,因为锁也尚未初始化。在这种情况下,您将得到NP异常。 现在,重要的是来自Java6的最终实例变量是线程安全的,所以用户可以使用最终对象来锁定构造函数。 如果您正在锁定XYD.class,那么它将是应用程序锁,这在您的情况下可能有效,但有时您需要实例级锁,在这种情况下,您可以使用上述方法。
对 |
![]() |
Khyxes · Java监视器中的同步方法 7 年前 |
![]() |
pathikrit · Scala部分函数应用语义+同步锁定 8 年前 |
![]() |
user2514421 · 多线程 9 年前 |
|
G Vaid · 同步对象:锁定代码与锁定对象 9 年前 |
![]() |
hermit · 显示奇怪结果的同步块 9 年前 |
![]() |
Raj · 如何使构造函数同步? 11 年前 |