0

以下の質問は抽象的な質問のようなものであり、問​​題についての意見を聞いていただければ幸いです。

私の問題は以下のとおりです。

データフィードをリッスンし、それらをキャッシュに保存するスレッドがあります。キャッシュに何かが追加されるたびに、オブザーバーはそれを取得してHashMapに追加します。フィードの数は事前にはわかりませんが、その数は無限ではありません。

さらに、私のアプリケーションは、何らかの処理を実行している別のスレッドを実行してから、HashMap内の値を取得します。

ここでの私の問題は、すべての値がHashMapに格納されているかどうかがわからないため、2つのスレッドを相互に同期したり、すべてのフィードを格納するジョブが終了したことを後のスレッドに通知したりできないことです。

フローは次のようになります。

Thread-1 -> listens for data feeds -> cache data feeds -> cache observer -> HashMap

                                                                               ^
                                                                               |
Thread-2 -> starting execution at a random time and needs data from the      HashMap

私はその問題に対するいくつかの提案を聞くことに本当に興味があります。上記で考慮すべき唯一のトリッキーなことは、HashMapに格納されるフィードの数が実際にはわからないため、オブジェクトの格納を担当する他のスレッドからの通知を待つことができないということです。

どんな回答でもありがたいです。

4

1 に答える 1

1

事前に記録されたテストデータの終了時に、を使用して直接Conditionウェイクアップすることはできませんか?テスト中の2つのスレッドは(おそらく依存性注入を介して)オブジェクトを共有できますか?Thread-2Thread-1Condition

于 2012-12-20T16:59:58.023 に答える