看看这段代码:
public class ThreadTest {
public static void main(String[] args) {
new Thread(new Runnable() {
@Override
public void run() {
while(true) {
//some code here
}
}
}).start();
System.out.println("End of main");
}
}
通常,当达到main
的结尾时,程序终止。但在此示例中,程序将打印“End of main”,然后继续运行,因为该线程仍在运行。有没有一种方法可以让线程在到达目的地时自动停止 ,而不使用像while(isRunning)
这样的东西?
答案 0 :(得分:4)
您正在创建的线程是独立的,并且不依赖于主线程终止。您可以使用Daemon
线程。 守护程序线程将在没有其他线程运行时由JVM终止,它还包括一个主线程执行。
public static void main(String[] args) {
Thread t = new Thread(new Runnable() {
@Override
public void run() {
while (true) {
System.out.println("Daemon thread");
}
}
});
t.setDaemon(true);
t.start();
System.out.println("End of main");
}
答案 1 :(得分:3)
将其设为a daemon thread。
public final void setDaemon(boolean on)
将此主题标记为a 守护程序线程或用户线程。 Java虚拟机何时退出 运行的唯一线程都是守护程序线程。这种方法必须是 在线程启动之前调用。
Thread t = new Thread(new Runnable() {
@Override
public void run() {
while(true) {
//some code here
}
}
});
t.setDaemon(true);
t.start();
System.out.println("End of main");