簡體   English   中英

如何使一個線程等待其他線程完成

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM