我需要的是一个像CoundDownLatch一样的工具/类,但可以上下计数。每当任务执行时,它都会计时,当任务完成时,它会倒计时。可以有多个任务并行运行,一个线程应该等到没有任务执行/计数器为0。
我查看了Phaser课程,但我不知道它是否提供了我想要的东西,也许它可以用来解决这个难题?
答案 0 :(得分:1)
您可以将java.util.concurrent.locks.Condition
与ReentrantLock
和AtomicInteger
一起使用。
任务执行者的伪代码:
// start executing task
taskCounter.incrementAndGet();
// execute task
...
// stop executing task
if (taskCounter.decrementAndGet() == 0) {
condition.signal();
}
服务员线程的伪代码:
condition.await();
答案 1 :(得分:0)