私にはいくつかの開発が必要であり、使用する設計パターンがあるかどうかを確認しようとしています。問題は簡単です:
多くのトレッドを起動するメインスレッドがあります。メイン スレッドは、各スレッドが終了するのを待ってから、別の処理を行う必要があります。既存のコードは少し醜いです。スレッド グループをチェックして何かが実行されているかどうかを確認する while ループがあります。
//launch threads
.....
//wait for threads to finish
while (ThreadRepository.getInstance().isActiveThreadGroup(myGroupId)) {
Thread.sleep(5000);
}
//doing something else
ご覧のとおり、while ループは実行中のスレッドがなくなるまで実行を続けます。
私は生産者と消費者のパターンで考えていましたが、そのようなことをしたいと思います:
たとえば、いくつかの BlockingQueue を使用し、各スレッドがそれに何かを入れます (または取ります)。myQueue.take()
whileとsleepの代わりに、キューが空になるのを待つ何かが欲しい
です。空の場合、スレッドが実行されていないことを意味します。
インターネットで検索しようとしましたが、自分の問題に一致するものが見つかりませんでした。
私の問題を解決するのに最も効率的な方法を知っている人はいますか?