gpt4 book ai didi

java - 我的 Property Loader 单例线程安全吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:16:03 24 4
gpt4 key购买 nike

由于意外的属性值,我收到错误,我正在尝试缩小原因范围。该属性由以下示例类从文件加载:

public final class PropertyLoader {

private enum Instances{
ELVIS;

private final PropertyLoader loader;

Instances() {
this.loader = new PropertyLoader();
}
}

private boolean isPropertyEnabled;

private PropertyLoader() {
loadProperties();
}


public static PropertyLoader getInstance() {
Instances.ELVIS.loader;
}

private void loadProperties() {
this.isPropertyEnabled = loadPropertyFromFile(FILE, "enabled");
//... more properties
}

public boolean isPropertyEnabled() {
// eventually returns unexpected value
return this.isPropertyEnabled;
}
}

这个实现是线程安全的吗?如果没有,如何在不更改接口(interface)的情况下改进实现?是否有有效的策略来测试此类的并发问题?

最佳答案

它是线程安全的。因为所有的初始化基本上都是在类初始化的时候完成的。因此,在类加载完成之前,两个线程无法从对象中获取数据。

关于java - 我的 Property Loader 单例线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35341533/

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