2

我很少有线程可以并行执行活动。只有在所有线程都完成后,我才必须继续进行后续的活动。有没有办法做到这一点?

4

5 回答 5

5

您应该看一下join()Thread 类中的方法。连接可用于允许一个线程等待另一个线程完成。它也被重载以允许指定等待另一个线程完成的时间。连接作为 Java 并发教程的一部分进行了讨论

于 2012-04-10T12:49:33.287 回答
3

对所有线程执行 thread.join()。

于 2012-04-10T12:49:49.510 回答
3

http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Thread.html#join ()

您可以使用 Thread.join() 来等待线程完成。查看 Javadoc 以获取更多信息。

于 2012-04-10T12:49:51.180 回答
2

我认为使用http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/CountDownLatch.html实际上比 Thread.join() 更可取,因为它应该可以更好地扩展。

于 2012-04-10T12:54:21.360 回答
2

从概念上讲,解决您的问题的一种方法是创建一个观察者对象,您正在运行的每个线程都将引用该对象。一旦一个线程完成,它就会通知观察者它执行了他的任务。Observer 每次收到这种通知,都会增加一个计数器,一旦计数器达到线程数,就意味着所有线程都完成了。然后观察者可以开始最后的任务。

那是为了理论。如果你想要一个内置的java类:CountDownLatch

于 2012-04-10T12:59:16.860 回答