Java:线程是否以我的应用程序结尾

时间:2018-10-30 14:07:09

标签: java multithreading

想象一下,您有一个应用程序A和一个类似Thread的类:

public class MyThread extends Thread {...}

从A开始,使用以下命令启动线程:

new MyThread.start();

然后,当应用程序A完成时,MyThread也停止吗?否则,如何确保它会被中断?

2 个答案:

答案 0 :(得分:3)

线程可以在Java中运行的方式有两种:

  • 作为普通应用程序线程
  • 作为“守护程序”线程。

当JVM退出时,它检查是否还有任何非守护进程线程在运行,并且它将等待那些退出。如果您不希望JVM等待这些后台线程,请确保在线程上调用方法setDaemon(true)

有关更多详细信息,请查看另一个问题:

What is a daemon thread in Java?

此外,作为补充,目前,在Java中运行线程的推荐方法是实现Runnable,而不是扩展Thread。在此处查看更多详细信息。

"implements Runnable" vs "extends Thread" in Java

答案 1 :(得分:0)

默认情况下,不,JVM将继续运行直到线程退出。您可以使用System.exit完全从任何线程停止JVM,或者使用Thread.setDaemon(true)将您的线程标记为守护程序,这意味着它不会阻止JVM退出。