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/