2017-03-13 28 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()がDBからデータを読み出すことにより、いくつかのオブジェクトを初期化します。これらのオブジェクトはスレッドによって内部的に使用されます。Java |メインスレッド変数の更新|子使用更新された値

チャレンジ:DB内データは定期的に更新するために使用されます。私のAPPでこれらの値を更新し、更新された値をスレッドに渡すにはどうすればよいですか?私は非常に明確ではありませんよ場合

、私に知らせてください。すべてのヘルプは本当にいただければ幸いです:)

答えて

1

それは難しいことではありません。あなたはDBへのアクセスを1つの場所に保つ必要があります(それをサービス層と呼ぶ)。あなたのスレッドが唯一のDBからの読み込みと書き込みをしていないと仮定すると、

。それらのすべてがサービスへの参照を持っています。 Springを使用している場合、それらはサービスの@Autowireを持つことができます。 Springを使用していない場合は、Singletonパターンを使用します。

データが変更される頻度に応じて

、それが読まれる頻度は、サービス内の値をキャッシュ考えることができます。

DBから読み取るメソッドをセキュリティのためだけに同期としてマークするのは面白いかもしれませんが、読んでいるだけでは必須ではありません。

関連する問題