我有一个函数funcA(),该函数由线程调用。此函数funcA()调用多个函数,所有这些函数均在其他并行线程上运行。我希望我的第一个线程调用funcA()等待所有这些线程完成工作,然后移至下一行以进一步执行。
例如Thread1-> funcA();
funcA()
{
funcBackground();
//Once the above method's threads have completed their work
doSomeOtherWork();
}
funcBackground()
{
Thread2 -> doJob1();
Thread3 -> doJob2();
Thread4 -> doJob3();
.
.
.
//All the above threads have completed their work
}
我该如何实现? 我知道您可能正在考虑是否要在单个线程中全部运行,然后为什么要在funcBackground()中使用多个线程。关键是我的funcBackground()是从多个地方调用的。但是我只希望在应用程序中的某个位置执行此单线程。
答案 0 :(得分:0)
您可以创建实现callables
的所有线程(Thread2,thread3 ....),这些线程将返回Futures。
并且直到所有线程都如下所示完成后,才能退出funcBackground
。
while(!future2.isDone());
while(!future3.isDone());
while(!future4.isDone());
或者您可以使用
future2.get()
,因为这也会阻止。