有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

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

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

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


共 (1) 个答案

  1. # 1 楼答案

    这并不难。您需要将对数据库的访问保持在一个位置(我们称之为服务层)

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

    根据数据变化的频率和读取次数,可以考虑缓存服务中的值。

    为了安全起见,将从DB读取的方法标记为Synchronized可能会很有趣,但由于您只是在读取,所以它不应该是强制性的