首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java同步:多个CountDownLatch

Java同步:多个CountDownLatch
EN

Stack Overflow用户
提问于 2019-05-15 21:38:09
回答 1查看 80关注 0票数 0

以下情况:线程A启动线程B,并应等待线程B完成其工作。线程B可以启动一个新的线程C。如果是这种情况,线程A应该等待线程B和线程C。

我可以使用两个CountDownLatch来实现它,但我想知道是否有更好的解决方案。我看过CyclicBarrier和Phaser,但我认为他们不适合我的情况。

EN

回答 1

Stack Overflow用户

发布于 2019-05-15 22:14:30

您可以使用Thread.join

代码语言:javascript
复制
final Thread c = new Thread(() -> {doSomethingInThreadC()});
c.start();
final Thread b = new Thread(() -> {
  doSomethingInThreadB_I();
  c.join(); // wait until thread C is completed
  doSomethingInThreadB_II();
});
b.start();
Thread a = new Thread(() -> {
  doSomethingInThreadA_I();
  b.join(); // wait until thread B is completed
  doSomethingInThreadA_II();
});
s.start();

然而,这种方法有一些限制-它会一直等待,直到线程停止(直到某个操作完成)。如果线程B和C是池化线程,那么这些线程永远不会停止。

如果您正在寻找完成的工作,那么使用wait/notify

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56150779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档