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 ...