java 線程狀態(tài) 如何確保main()方法所在的線程是Java程序最后結(jié)束的線程?
如何確保main()方法所在的線程是Java程序最后結(jié)束的線程?要達(dá)到這種情況,我們必須知道以下幾點(diǎn)1。Java中的線程結(jié)束在run方法完成后自動結(jié)束2。在主線程(main thread)中,我們需要
如何確保main()方法所在的線程是Java程序最后結(jié)束的線程?
要達(dá)到這種情況,我們必須知道以下幾點(diǎn)
1。Java中的線程結(jié)束在run方法完成后自動結(jié)束
2。在主線程(main thread)中,我們需要獲取所有線程的引用。
3. 了解JDK提供的countdownlatch的用法
示例如下:
public static void main(string[]args)throws interruptedexception
{
//countdownlatch有幾個(gè)線程作為計(jì)數(shù)器記錄,例如,有兩個(gè)線程
countdownlatch latch=new countdownlatch(2)
worker Worker1=new worker(閂鎖)
worker worker2=new worker(閂鎖)
Worker1。Start()//開始線程
worker2。Start()//]//等待所有工人完成他們的工作等待()
系統(tǒng)輸出打?。ā八泄ぷ髟凇眘df.format格式(new Date())
}
類工作線程擴(kuò)展
{
私有CountDownLatch閂鎖
公共工作線程(CountDownLatch閂鎖)
{這個(gè)。門閂=latch
}
公共void Run(){
xxxxx
//在run方法結(jié)束之前,將線程計(jì)數(shù)器減少一個(gè)倒數(shù)計(jì)時(shí)()
}
}