我看到一位 stackoverflow 成员建议使用 Thread.join() 让“主”线程等待 2 个“任务”线程完成。
我经常会做一些不同的事情(如下所示),我想知道我的方法是否有任何问题。
final CountDownLatch latch = new CountDownLatch(myItems.length);
for (Item item : myItems) {
//doStuff launches a Thread that calls latch.countDown() as it's final act
item.doStuff(latch);
}
latch.await(); //ignoring Exceptions for readability
您的解决方案更容易扩展。在创建 CountdownLatch 和其他同步器之前,Thread.join() 是解决问题的完美方法。
就可读性而言,我会选择 CountdownLatch 方法而不是在每个线程上加入。这还允许您更改 Item 的实现,以便可以提交到 Executor 服务,而不是直接使用线程。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)