私は Java の専門家ではなく、私の質問はやや抽象的なものです。提案されたアーキテクチャと要件を実装する最善の方法についてアドバイスが必要です。
私の要件について説明します。
処理するタスクを受け取る (タスク キューを保持する) マネージャー オブジェクトがあります。マネージャーは専用スレッド間でタスクを分散する必要があります。各スレッドは、特定のタイプのタスクのみを実行することを知っています。
タイプ固有のスレッドのコレクションを持つメイン マネージャー クラスを作成しました。メイン マネージャーが新しいタスクを受け取ると、このタスクの処理方法を認識しているスレッド クラス オブジェクトのキューにタスクをプッシュします (各スレッドには独自のタスク キューがあります)。 )。
スレッドは、前のタスクの処理が終了したときにキューからタスクをプールする必要がありますが、キューが空の場合、リソースを使用してはならず、新しいタスクが到着したときにウェイクアップする必要があります。
私は(あまり良くないかもしれませんが)、タイマーオブジェクトを拡張するスレッドを使用し、そのキューをチェックする時間指定タスクを使用することでしたが、これは、新しいタスクが到着するまでリソースを解放するという私の要件には適合しません。
これらのシステム要件を処理するための最良の方法の提案をいただければ幸いです (私の質問は宿題ではなく、私の開発タスクの一部です)。
編集
(@Alexander Torstling への回答) 現在、ブロッキング キューをタスク キューとして使用しています。私の質問は同時実行性の問題ではなく、アーキテクチャの問題です。キューが空のときにリソースを解放したいので、おそらく新しいタスクが到着した場合のイベント。タスクの処理が終了し、さらに多くのタスクがある場合は、次のタスクを処理し続けます。