gpt4 book ai didi

java - 非最终实例的线程安全延迟初始化

转载 作者:行者123 更新时间:2023-12-02 08:49:57 24 4
gpt4 key购买 nike

我看过这个答案here展示如何对静态最终单例进行线程安全的延迟初始化。

但是,如果您延迟加载的类不是最终的,那么最好的解决方案是什么? (它有一些你创建后要调用的方法)

将方法调用放在静态 block 中是否安全?

public class Something {

private static class LazyHolder {
public static final Something INSTANCE = new Something();
static {
INSTANCE.setValue("foo");
}
}

public static Something getInstance() {
return LazyHolder.INSTANCE;
}
}

最佳答案

这是 IODH(按需初始化方法)惯用语。

But what is the best solution if the class you are lazy loading isn't final? (It has some methods you want to call after creating it)

您的“实例”是否是最终的并不重要。它将被延迟加载(当您第一次调用 getInstance 方法时)。
将 INSTACE 设置为 Final 的目的是确保,它始终指向一种对象,但您可以自由修改对象属性。

关于java - 非最终实例的线程安全延迟初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60843501/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com