現在のスレッドをスリープ状態に保ち、このようAtomicInteger
にチェックし続ける必要がないように、待機する方法はありますかAtomicInteger
while(atomicInt.get() >= 0) {
Thread.sleep(1000)
}
のようなものがあることは知っていCountDownLatch
ますが、それはデクリメントのみを可能にし、インクリメントできるようにするためにも必要です
さらに裏話 - スレッドを作成するループがあり、新しいスレッドを作成する前に、スレッドの実行が終了するのを待つ必要があります。しかし、私はを使用してExecutors.newFixedThreadPool(numThreads)
おり、それを待機する唯一の方法は、シャットダウンメソッドを呼び出して終了を待ってから新しいスレッドプールを作成することであるように思われるため、代わりにアトミック整数を使用して、実行中および/またはオンになっているスレッドの数を追跡していましたその数が減少したときにループを続行できるようにキューを変更しました。