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

时间:2017-03-13 06:02:04

标签: 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()将通过从DB读取数据来初始化某个对象。这些对象由线程在内部使用。

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

如果我不是很清楚,请告诉我。真的很感激任何帮助:)

1 个答案:

答案 0 :(得分:1)

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

假设您的线程只是从DB读取而不是写入。所有这些人都会参考该服务。如果您使用Spring,那么可以使用@Autowire of the Service。如果您不使用Spring,请使用Singleton模式。

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

将数据库读取的方法标记为“同步”只是为了安全起见,这可能很有意思,但由于您只是阅读,因此它不应该是强制性的。