栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

由thread.join()在静态块中引起的死锁

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

由thread.join()在静态块中引起的死锁

是的,仅此而已。新线程

StaticDeadlock
在访问静态成员之前,等待的类初始化程序完成。有关更多详细信息,请参见Java语言规范的12.4.2节,尤其是以下步骤:

  1. 在Class对象上进行同步(第14.19节),该对象表示要初始化的类或接口。这涉及等待当前线程可以获取该对象的锁(第17.1节)。

  2. 如果正在通过其他线程对类或接口进行初始化,请等待此Class对象(临时释放锁)。当当前线程从等待中唤醒时,请重复此步骤。

  3. 如果当前线程正在对类或接口进行初始化,则这必须是对初始化的递归请求。释放对Class对象的锁定并正常完成。

  4. 如果类或接口已经初始化,则无需采取进一步的措施。释放对Class对象的锁定并正常完成。

它甚至不会超过第二个线程中的步骤1,因为第一个线程具有锁定并且不会释放它。

请注意,不是在调用

getClass()
会导致问题-做 任何
需要使用value的操作
o
都会使第二个线程等待类初始化程序完成,这当然不会发生,因为第一个线程正在等待第二个线程完成。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/453021.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号