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,所以我使用一个原子整数来跟踪运行和/或开启的线程数队列,以便当该数字减少时,我可以继续循环.
我认为你真正想要的是处理一些事件。该事件又可以增加一个整数。看一下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)