我有一个像这样的类,我在其中更新线程中的静态变量。我需要从另一个类访问这个变量。
import java.util.ArrayList;
import java.util.List;
public class VariableUpdater implements Runnable {
static List < String > abc = new ArrayList < String > ();
private static VariableUpdater instance = null;
private VariableUpdater() {}
public static synchronized VariableUpdater getInstance() {
if (instance == null) {
instance = new VariableUpdater();
}
return instance;
}
public static void main(String[] args) {
Thread th = new Thread( VariableUpdater.getInstance());
th.start();
}
@Override
public void run() {
while (true) {
System.out.println();
try {
abc.add("aa");
Thread.sleep(1000);
printContent();
} catch (Exception e) {
// TODO: handle exception
}
}
}
public synchronized void printContent() {
for (String string: abc) {
System.out.println(string);
}
}
}
并且这个变量需要从另一个类中访问,如下所示:
public class Accessor {
public static void main(String[] args) {
VariableUpdater.getInstance().printContent();
}
}
问题是,在运行 Accessor 类时,列表是空的。
我在这里错过了什么吗?
更新/解决方案
事实证明,我们可以通过使用 Hazelcast 或某种消息传递/缓存实用程序来实现这一点。我会尽快发布完整的解决方案。
资料来源:如何在 java 应用程序之间共享对象?