1

皆さん、私は重大な問題で立ち往生しています。アプリケーションのダッシュボードを作成しました。ダッシュボードに表示しているデータは、私のビジネス ロジックに基づいて作成されています。このデータを更新するさまざまな非同期トリガーがあります。これらのトリガーは、さまざまなパラメーターに基づいて呼び出されます。たとえば、タイマー トリガー、エンティティの削除、エンティティの追加などです。これらのすべてのトリガーには、ダッシュボードのデータを更新するさまざまな機能があります(このデータはデータベースに保存されていることを思い出してください。つまり、データベースから直接読み取ってダッシュボードにデータを表示します)ダッシュボード データの計算に時間がかかる. ここでの問題は、2 つの異なるトリガーが同時に呼び出されるたびに、データの一貫性が失われることです。たとえば、1 つのトリガーがデータを変更し、他のトリガーもそれをリセットします。そのため、最終的には望ましい結果が得られません。ここで、一度に1つのトリガーだけがデータを更新し、他のトリガーが最初のトリガーが完了するのを待っていることを確認したいと思います。

単に私が望むのは、関数呼び出しをキューに保持し、実行中のメソッドが既にある場合は、その完了を待ってキュー内の次のメソッドを呼び出すことです。

4

4 に答える 4

2

単一のスレッドで構成されたExecutorServiceが必要なようです。各 Runnable を送信するだけで、executor はこれらを実行のためにキューに入れます。詳細については、この SO の質問/回答を参照してください。

于 2013-05-02T09:16:17.390 に答える
0
ExecutorService executorService2 = Executors.newFixedThreadPool(1);

ジョブをキューに入れ、1つずつ処理します

于 2014-04-08T09:58:07.327 に答える