【发布时间】:2015-05-03 10:19:03
【问题描述】:
我有两个线程,countDownLatch 设置为 1,因此,当第一个线程完成时,第二个线程应该启动。而我想要做的是,当第二个完成它的任务时,我想获取从两个线程计算的数据来做一些操作。
现在我的问题是,有什么方法可以知道CountDownLatch 对象是否完成了它的任务?
更新
使用安全吗
while (latch.getcountDown()==0) {
// do the calculations on the data processed by the two threads
}
【问题讨论】:
-
使用thread.notify;也可以使用tutorialspoint.com/java/lang/object_notifyall.htm链接作为参考
-
@SaurabhJhunjhunwala 你的意思是latch.notify吗?你能提供两个例子吗
-
a) 不清楚您所说的“完成任务”是什么意思? CountDownLatch 不执行任何任务。 b) 有什么理由不使用 Executors 和 Futures?看起来像这样的事情的完美工具。
-
@SergeyTachenov 我的意思是,当锁存器最初设置为 1 时,第一个线程将启动并且我调用 latch.countdown()..然后线程 1 调用 .countdown( ) 并且锁存器达到 0。
-
这正是
Future.get()和Future.isDone()方法的用途。
标签: java multithreading executorservice countdownlatch