19
A
回答
26
編號
Java程序在所有非守護程序線程完成時終止。
的documentation狀態:
當Java虛擬機啓動時,通常 有一個非守護線程 (通常調用名爲主一些指定 類的 方法)。 Java虛擬機 繼續執行線程,直到 下列任一情況:
Runtime
類的exit
方法被調用和 安全管理器允許 退出操作發生。- 所有線程都沒有守護線程已經死亡,無論是通過拋出該 傳播超越了
run
方法的異常從調用run
方法或 返回 。
如果你不想運行時等待的線程,調用setDaemon
method。
2
編號 主線程爲非惡魔線程,除非您的子線程爲惡魔線程,即使主線程在子線程完成之前程序也不會終止。你可以使用下面的示例程序來檢查。
public class app {
public static void main(String[] args) throws InterruptedException {
app2.mt=Thread.currentThread();
app2 t = new app2();
t.start();
System.out.println("Main starts");
Thread.sleep(2000);
System.out.println("Main ends");
}
}
class app2 extends Thread{
static Thread mt;
public void run(){
try {
mt.join();//waits till main thread dies.
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("child thread");
}
}
相關問題
- 1. 紅寶石 - 當主線程退出時不要終止進程
- 2. 如何終止正確的應用程序退出線程
- 3. 退出時終止應用程序
- 4. C++子線程終止在main()父線程退出?
- 5. 當父線程終止時子線程退出
- 6. Boost線程終止程序?
- 7. 如何終止/退出/中止舊線程工作並重新啓動程序?
- 8. Android線程主要退出
- 9. 終止程序退出時在線程中運行的子進程
- 10. 當主線程退出時,如何讓子線程退出?
- 11. 阻止程序終止的線程
- 12. Python的線程 - 管理線程終止與主線程
- 13. 終止線程
- 14. 終止線程
- 15. 如何退出/暫停/終止/終止/停止MSBuild進程?
- 16. 如何在Android應用程序退出後終止進程?
- 17. Python終止進程退出代碼-1073741819
- 18. phantomjs退出()不終止進程
- 19. 可以退出()無法終止進程?
- 20. 爲什麼pThread退出導致主進程終止?
- 21. 終止主線程,但不確保終止它產生的線程
- 22. 在主線程/程序終止時運行一個方法?
- 23. C# - 雖然主線程完成,但可能會阻止應用程序退出?
- 24. 線程應用程序意外終止
- 25. 執行程序線程不終止
- 26. 程序掛起,線程不會終止
- 27. 選擇性線程終止程序
- 28. 如何在JavaFX Runtime退出時終止預定的線程?
- 29. 線程終止/退出後驗證數據結構
- 30. 終止Java線程
如果有任何線程調用System.exit()程序可以退出,但是如果所有main都返回,則非守護線程將使應用程序繼續運行。 – 2011-04-12 23:34:00
對於像這樣定義好的東西,你應該首先嚐試一下;你會得到答案,如果你仍然有一個問題,你可以發佈一個代碼片段,使討論更有價值的其他誰有同樣的問題。 – coffeetocode 2011-04-13 00:57:56