java |主线程变量更新 |子级使用更新后的值

标签 java multithreading global-variables

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

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

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

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

最佳答案

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

假设您的线程仅从数据库读取而不写入。他们所有人都会引用该服务。如果您使用Spring,那么这些服务可以有一个@Autowire。如果您不使用 Spring,请使用 Singleton 模式。

根据数据更改的频率以及读取的频率,您可以考虑在服务中缓存值。

为了安全起见,将从数据库读取的方法标记为“同步”可能会很有趣,但由于您只是在读取,所以它不应该是强制性的。

关于 java |主线程变量更新 |子级使用更新后的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42757425/

相关文章:

内存管理困惑: global char * in C program

Java - 如何从 JSON Schema 获取所有字段名称

java - 为什么在这里使新变量产生不同的值?

java - 升级到 AppCompat v22.1.0,现在出现 "removing attribute"错误

c# - 我对处理器、内核、线程和并行性的理解是否正确?

javascript - 全局变量在函数中使用时返回未定义

c - memcpy 使用本地指针指向全局数据

java - 如何将LinkedIn SDK添加到现有项目中?

java - 由于 Java 中的线程,不同机器中的性能/时间问题

c++ - memory_order_relaxed 如何在智能指针中增加原子引用计数?