Javaでは、次の問題に対する効率的な解決策は何ですか:
複数のスレッド (10 ~ 20 程度) を生成するジョブ (「ジョブ クリエーター」) と、それらを実行できる単一のスレッド (「ワーカー」) があります。ジョブ作成者がジョブを投稿したら、ジョブが終了するのを待って、「完了」以外の結果が得られない状態で、ジョブを続行する必要があります。
ジョブをワーカー スレッドに送信するには、リング バッファまたは同様の標準的なファンイン セットアップがおそらく良い方法ではないでしょうか? しかし、ジョブクリエーターが自分の仕事が完了したことを知るかどうかは、私にはよくわかりません..
ジョブ作成者はスリープし、作業が完了するとワーカーが中断する可能性があります。または、各ジョブ作成者は、チェックしてワーカーが設定するアトミックブール値を持つことができます。どちらもあまりいい気分ではありません。可能な限り少ないロック (可能であればなし) でそれを行いたいと思います。明確にするために、私が探しているのはスピードであり、必ずしも単純さではありません。
誰か提案はありますか?同時実行戦略に関する読み物へのリンクも大歓迎です!