Java |主线程变量更新|子线程使用更新的值

Java |主线程变量更新|子线程使用更新的值,java,multithreading,global-variables,Java,Multithreading,Global Variables,initializeGlobalTable将通过从DB读取数据来初始化某些对象。这些对象由线程在内部使用 挑战:数据库中的数据用于定期更新。我应该如何在我的应用程序中更新这些值,并将更新后的值传递给读取它的线程 如果我不太清楚,请一定告诉我。任何帮助都将不胜感激:没有那么困难。您需要将对数据库的访问权保留在一个地方,我们称之为服务层 假设线程只从数据库中读取而不写入。所有这些文件都会引用该服务。如果您使用的是Spring,那么它们可以具有服务的@Autowire。如果不使用Spring,请使用S

initializeGlobalTable将通过从DB读取数据来初始化某些对象。这些对象由线程在内部使用

挑战:数据库中的数据用于定期更新。我应该如何在我的应用程序中更新这些值,并将更新后的值传递给读取它的线程


如果我不太清楚,请一定告诉我。任何帮助都将不胜感激:

没有那么困难。您需要将对数据库的访问权保留在一个地方,我们称之为服务层

假设线程只从数据库中读取而不写入。所有这些文件都会引用该服务。如果您使用的是Spring,那么它们可以具有服务的@Autowire。如果不使用Spring,请使用Singleton模式

取决于数据变化的频率和读取次数,可以考虑缓存服务中的值。< /P> 为了安全起见,将从DB读取的方法标记为Synchronized可能会很有趣,但由于您只是在读取,所以它不应该是强制性的

public class App {
    initializeGlobalTable();
    for (int instanceCount = 0;instanceCount<numberOfInstances;instanceCount++)
   {
        Instance instance = new SomeInstance();
        Thread thread = new Thread(instance);
        thread.start();
   }
}