java中如何結(jié)束一個(gè)程序 如何確保main()方法所在的線程是Java程序最后結(jié)束的線程?
如何確保main()方法所在的線程是Java程序最后結(jié)束的線程?要達(dá)到這種情況,我們必須知道以下幾點(diǎn)1。Java中的線程結(jié)束在run方法完成后自動(dòng)結(jié)束2。在主線程(main thread)中,我們需要
如何確保main()方法所在的線程是Java程序最后結(jié)束的線程?
要達(dá)到這種情況,我們必須知道以下幾點(diǎn)
1。Java中的線程結(jié)束在run方法完成后自動(dòng)結(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í)在Java程序中,可以使用java.lang.System系統(tǒng)但是使用exit方法的本質(zhì)是終止JVM的運(yùn)行。如果另一個(gè)程序同時(shí)運(yùn)行,使用exit方法也會終止程序,在這種情況下應(yīng)該避免使用interrupt(),它可以用來中斷和退出正在運(yùn)行的進(jìn)程。對于多線程程序,必須關(guān)閉所有非守護(hù)進(jìn)程。exit方法用于僅當(dāng)程序異常退出時(shí)才退出程序。