有没有办法等待原子整数的更改

jge*_*tle 12 java multithreading atomic

有没有办法等待,AtomicInteger所以我不必继续睡觉我的当前线程并继续检查AtomicInteger这样

while(atomicInt.get() >= 0) {
    Thread.sleep(1000)
}
Run Code Online (Sandbox Code Playgroud)

我知道有这样的事情,CountDownLatch但只允许我减少我也需要它能够增加

进一步的BackStory - 我有一个创建线程的循环,我需要在创建新线程之前等待其中一个线程执行完成.然而,我正在使用一个Executors.newFixedThreadPool(numThreads)和等待它的唯一方法似乎是调用shutdown方法等待终止,然后创建一个新的threadPool,所以我使用一个原子整数来跟踪运行和/或开启的线程数队列,以便当该数字减少时,我可以继续循环.

Lou*_*man 6

Semaphore看起来它可能更接近你正在寻找的东西,实际上 - 它让你等到一个或多个"许可"可用. AtomicInteger并不意味着如何使用它.


And*_*ite 2

我认为你真正想要的是处理一些事件。该事件又可以增加一个整数。看一下BlockingQueue

队列还支持在检索元素时等待队列变为非空的操作,以及在存储元素时等待队列中的空间变为可用的操作。

代码可能看起来像......

MyEvent incrementEvent = queue.take(); //blocks until an event is added to the queue
// increment int and do logic here
Run Code Online (Sandbox Code Playgroud)