是的,仅此而已。新线程
StaticDeadlock在访问静态成员之前,等待的类初始化程序完成。有关更多详细信息,请参见Java语言规范的12.4.2节,尤其是以下步骤:
在Class对象上进行同步(第14.19节),该对象表示要初始化的类或接口。这涉及等待当前线程可以获取该对象的锁(第17.1节)。
如果正在通过其他线程对类或接口进行初始化,请等待此Class对象(临时释放锁)。当当前线程从等待中唤醒时,请重复此步骤。
如果当前线程正在对类或接口进行初始化,则这必须是对初始化的递归请求。释放对Class对象的锁定并正常完成。
如果类或接口已经初始化,则无需采取进一步的措施。释放对Class对象的锁定并正常完成。
它甚至不会超过第二个线程中的步骤1,因为第一个线程具有锁定并且不会释放它。
请注意,不是在调用
getClass()会导致问题-做 任何
需要使用value的 *** 作
o都会使第二个线程等待类初始化程序完成,这当然不会发生,因为第一个线程正在等待第二个线程完成。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)