[英]How to make a thread wait until other threads are completed
我有一個線程調用的函數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()是從多個地方調用的。 但是我只希望在應用程序中的某個位置執行此單線程。
您可以創建實現callables
對象的所有線程(Thread2,thread3 ....),這些callables
對象將返回Future。
並且直到所有線程都完成如下所示時,才從funcBackground
退出。
while(!future2.isDone());
while(!future3.isDone());
while(!future4.isDone());
或者你可以使用
future2.get()
因為這也將阻塞。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.