我刚刚阅读了关于Phaser
there的javadoc,并对该类的用法有疑问。 javadoc提供了一个示例,但现实生活中的例子呢?这种障碍实施在实践中可能有用吗?
答案 0 :(得分:0)
我没有使用Phaser
,但我使用了CountDownLatch
。引用的文档说:
[
Phaser
在功能上与...CountDownLatch
相似,但支持更灵活的使用。
CountDownLatch
在您启动多个线程执行某些任务的任何地方都很有用,而在老年时,您可以使用Thread.join()
等待它们完成。
例如:
旧学校:
Thread t1 = new Thread("one");
Thread t2 = new Thread("two");
t1.start();
t2.start();
t1.join();
t2.join();
System.out.println("Both threads have finished");
使用CountDownLatch
public class MyRunnable implement Runnable {
private final CountDownLatch c; // Set this in constructor
public void run() {
try {
// Do Stuff ....
} finally {
c.countDown();
}
}
}
CountDownLatch c = new CountDownLatch(2);
executorService.submit(new MyRunnable("one", c));
executorService.submit(new MyRunnable("two", c));
c.await();
System.out.println("Both threads have finished");