gpt4 book ai didi

java - 使用静态类作为存储

转载 作者:行者123 更新时间:2023-12-01 22:14:55 25 4
gpt4 key购买 nike

我有一个类(A类),它有一些用途,其中之一是存储变量。然后我尝试从 B 类为此变量设置一个值,并从 C 类检索该值。

每个类位于不同的包中,A类和B类用作库。问题是,当我检查 C 类的值时,该值为 null。

如何实现这一目标?

代码:

A类:

private static Config cfg;

public static void saveCFG(Config CFG) {
cfg = CFG;
}

public static Config retrieveCFG() {
return cfg;
}

B 类是一个 GUI,当按下按钮时,它会调用 saveCFG 方法:

ClassA.saveCFG(config);

C 类有一个线程不断检查该值:

final Thread t = new Thread(new Runnable() {
@Override
public synchronized void run() {
while (true) {
if (ClassA.retrieveCFG() != null) {
System.out.println("Saved.");
} else {
System.out.println("Not saved.");
}
try {
wait(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
t.start();

最佳答案

为了跨线程安全,您应该设置共享状态 volatile

private volatile static Config cfg;

关于java - 使用静态类作为存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31265403/

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