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. 如何终止/退出/中止旧线程工作并重新启动程序?
- 5. Android线程主要退出
- 6. 终止程序退出时在线程中运行的子进程
- 7. 当主线程退出时,如何让子线程退出?
- 8. 终止线程
- 9. 如何退出/暂停/终止/终止/停止MSBuild进程?
- 10. 如何在Android应用程序退出后终止进程?
- 11. 可以退出()无法终止进程?
- 12. Python终止进程退出代码-1073741819
- 13. 终止主线程,但不确保终止它产生的线程
- 14. 在主线程/程序终止时运行一个方法?
- 15. C# - 虽然主线程完成,但可能会阻止应用程序退出?
- 16. 选择性线程终止程序
- 17. 程序挂起,线程不会终止
- 18. 线程应用程序意外终止
- 19. 执行程序线程不终止
- 20. SlimDX - 终止线程
- 21. Java - 终止线程
- 22. 守护线程不退出,尽管主程序完成
- 23. Java:如何让这个主线程等待新线程终止
- 24. 是否可以在不终止程序的情况下退出主方法?
- 25. 如何退出多线程程序?
- 26. 主线程退出时取消任务
- 27. 用pthreads优雅地退出主线程
- 28. 停止从主线程主线程
- 29. 线程终止问题(C):最后线程不终止
- 30. 退出应用程序安全退出Qt线程
如果有任何线程调用System.exit()程序可以退出,但是如果所有main都返回,则非守护线程将使应用程序继续运行。 – 2011-04-12 23:34:00
对于像这样定义好的东西,你应该首先尝试一下;你会得到答案,如果你仍然有一个问题,你可以发布一个代码片段,使讨论更有价值的其他谁有同样的问题。 – coffeetocode 2011-04-13 00:57:56