首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >引用子类的Java静态初始化器:避免类装入死锁

引用子类的Java静态初始化器:避免类装入死锁
EN

Stack Overflow用户
提问于 2018-04-25 19:30:12
回答 1查看 566关注 0票数 9

我有一个类ItemType,它具有引用子类实例的最终静态字段:

代码语言:javascript
复制
public static final ItemType DURATION = new BuiltInAtomicItemType(x);

static class BuiltInAtomicItemType extends ItemType {

    public BuiltInAtomicItemType(X x) {
        this.x = x;
    }

如果一个线程先加载超类,而另一个线程先加载子类,则会导致类加载死锁的可能性。

现在的问题是,这是一个公共API,我不能轻易地更改它。我想要消除类装入死锁的可能性,但我不想强制更改引用ItemType.DURATION或其他40多个类似字段的应用程序。

有没有办法在保留公共API的同时避免潜在的死锁?

EN

回答 1

Stack Overflow用户

发布于 2020-02-04 16:50:58

状态报告:似乎没有人知道这个问题的解决方案。在复杂的应用程序中设计类结构,以避免类加载和初始化期间出现死锁的所有可能性似乎非常困难。在不对公共API进行不兼容更改的情况下,修改现有应用程序以消除这种可能性在一般情况下似乎是不可能的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50021182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档