多執行緒主線程等待子執行緒都執行完成才執行

2021-10-12 20:03:45 字數 2934 閱讀 2749

1.建立countdownlatch物件,設定子執行緒的數量

countdownlatch countdownlatch = new countdownlatch(size);

其中size就是子執行緒的數量

2.開啟執行緒執行方法

//壓縮生成.tbwj

file bidfile = ziputil.zip(temppath_, bizfilepath + file.separator + "tbwj" + file.separator + param.getbidsectionname(

) + file.separator + param.getbidsectionname(

) + commonconstant.zip)

; //刪除檔案

fileutil.del(temppath + file.separator + "tbwj" + file.separator + param.getbidsectionname());

return bidfile;講一下countdownlatch.countdown()方法,因為new countdownlatch(size)時會產生乙個計數,初始值是size,當呼叫countdown()方法時,size減一,當size變成0時,await()方法就會喚醒主線程,然後主線程執行。另外,await()的作用是使當前執行緒休眠,發生以下兩種情況之一就會結束休眠,1.使用countdown()直到size為0 2.其他執行緒中斷當前執行緒

另外,countdownlatch 可以配合執行緒池一起使用

//迴圈將檔案存到臨時路徑

string temppath_ =temppath + file.separator + "tbwj" + file.separator + param.getbidsectionname();

thread.currentthread(

).setname(

"主線程");

) + "執行完成");

});}

);try catch (interruptedexception e)

log.info(thread.currentthread(

).getname(

) + "執行");

long endtime = system.currenttimemillis();

long time

= endtime - starttime;

log.info(

; //壓縮生成.tbwj

file bidfile = ziputil.zip(temppath_, bizfilepath + file.separator + "tbwj" + file.separator + param.getbidsectionname(

) + file.separator + param.getbidsectionname(

) + commonconstant.zip)

; //刪除檔案

fileutil.del(temppath + file.separator + "tbwj" + file.separator + param.getbidsectionname());

return bidfile;

}

C 主線程等待子執行緒執行結束

佐左佑右 原文 c 主線程等待子執行緒執行結束 由於主程式中呼叫matlab的dll檔案進行計算要用較長的時間,主介面會有很長時間的卡頓,造成的使用者感受十分不好,因此我想在呼叫時,將呼叫放入子執行緒中,然後在主線程中彈出乙個提示框,顯示資料正在載入,等子執行緒執行結束後,主線程繼續工作。使用的是中...

java執行緒池主線程等待子執行緒執行完成

今天討論乙個入門級的話題,不然沒東西更新對不起空間和網域名稱 工作總往往會遇到非同步去執行某段邏輯,然後先處理其他事情,處理完後再把那段邏輯的處理結果進行彙總的產景,這時候就需要使用執行緒了.乙個執行緒啟動之後,是非同步的去執行需要執行的內容的,不會影響主線程的流程,往往需要讓主線程指定後,等待子執...

Java主線程等待所有子執行緒執行完畢

需求 main方法中建立了執行緒,子執行緒沒有執行結束的時候主線程執行結束了,利用join又不能保證併發執行,目的是主線程等待其子執行緒執行完成之後退出 實現 利用hook實現jvm的等待執行 業務執行緒 class customerthread implements runnable catch ...