我有几个并行执行活动的线程。所有线程完成后,我将不得不继续进行后续活动。有没有办法实现这个目标?
答案 0 :(得分:5)
你应该看一下join()
method in the Thread class。连接可用于允许一个线程等待另一个线程完成。它也被重载以允许指定等待另一个线程完成的时间。 Joins are discussed as part of the Java Tutorial on Concurrency
答案 1 :(得分:3)
对于所有线程都执行thread.join()。
答案 2 :(得分:3)
http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Thread.html#join()
您可以使用Thread.join()来等待线程完成。有关更多信息,请查看Javadoc。
答案 3 :(得分:2)
我认为使用http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/CountDownLatch.html实际上优于Thread.join(),因为它应该更好地扩展。
答案 4 :(得分:2)
从概念上讲,解决问题的方法是创建一个observer object,它将被您运行的每个线程引用。一旦线程完成,它通知观察者它执行了他的任务。每次Observer收到这种通知时,它会递增一个计数器,一旦计数器达到线程数,这意味着所有线程都完成了。然后观察者可以开始最后的任务。
这就是理论。如果你想要有一个内置的java类:CountDownLatch