多线程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 楼答案
这并不难。您需要将对数据库的访问保持在一个位置(我们称之为服务层)
假设线程只从数据库中读取而不写入。所有这些文件都会引用该服务。如果您使用的是Spring,那么它们可以具有服务的@Autowire。如果不使用Spring,请使用Singleton模式
根据数据变化的频率和读取次数,可以考虑缓存服务中的值。
为了安全起见,将从DB读取的方法标记为Synchronized可能会很有趣,但由于您只是在读取,所以它不应该是强制性的