使用静态类作为存储

时间:2015-07-07 09:56:51

标签: java class object

我有一个类(A类)有一些用法,其中一个是存储一个变量。然后我尝试从Class B为此变量设置一个值,并从Class 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();

1 个答案:

答案 0 :(得分:3)

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

private volatile static Config cfg;