让我们假设我们有一个方法:
public class DoStuff implements Runnable {
public void run()
{
A();
B();
C();
}
}
是否有一种简单的方法来创建将运行所有A()的n
个线程,然后是所有B(),然后是所有C()?
我知道我可以做类似的事情:
ExecutorService app = Executors.newFixedThreadPool(threadCount);
//create A class and run A();
app.shutdown();
app.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
对于A()然后B()然后C(),但我想要类似以下内容:
public class DoStuff implements Runnable {
public void run()
{
A();
//wait all A to finish;
B();
//wait all B to finish;
C();
}
}
始终使用相同的线程。
答案 0 :(得分:4)
您正在寻找CyclicBarrier
https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CyclicBarrier.html
答案 1 :(得分:-1)
你需要将A,B和C作为线程,你需要加入它们。 使用C加入A和B和B.
通过这种方式,你让B线程等到A的工作完成,然后C线程等到B的工作完成。