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

initializeGlobalTable()將通過從數據庫讀取數據初始化某個對象。這些對象由線程在內部使用。Java |主線程變量更新|兒童使用更新值

挑戰:數據庫中的數據用於定期更新。我應該如何更新我的APP中的這些值,並將這些更新值傳遞給讀取它的線程。

請讓我知道,如果我不是很清楚。任何幫助真的不勝感激:)

回答

1

這並不難。您需要在一個地方保留對數據庫的訪問權限(我們稱之爲服務層)。

假設你的線程只能從數據庫中讀取而不能寫入。他們都會提及該服務。如果您使用的是Spring,那麼可以擁有服務的@Autowire。如果您不使用Spring,請使用Singleton模式。

根據數據更改的頻率以及讀取頻率,您可以考慮緩存服務中的值。

將數據庫讀取方法標記爲Synchronized只是爲了安全性,這可能很有趣,但是因爲您只是在閱讀,所以它不應該是強制性的。