1,setDaemon(true)后就是后台线程(守护线程 ),反之就是前台线程(用户线程)
2,后台线程 和 前台线程的区别:在java程序中如果所以的前台线程都已经退出,所有的后台线程自动退出。
TestThread为后台线程:
public class ThreadDemo {
public static void main(String[] args) {
Thread t = new TestThread();
t.setDaemon(true);
t.start();
// while(true) {
// System.out.println("main(): "+Thread.currentThread().getName() + " is running");
// }
}
}
class TestThread extends Thread {
public void run() {
while(true) {
System.out.println("TestThread: "+Thread.currentThread().getName() + " is running");
}
}
}
运行当前台线程main退出后自动退出。
TestThread和main一样也是前台线程:
public class ThreadDemo {
public static void main(String[] args) {
Thread t = new TestThread();
// t.setDaemon(true);
t.start();
// while(true) {
// System.out.println("main(): "+Thread.currentThread().getName() + " is running");
// }
}
}
class TestThread extends Thread {
public void run() {
while(true) {
System.out.println("TestThread: "+Thread.currentThread().getName() + " is running");
}
}
}
TestThread 就不会退出。
也就是说,所有的前台线程结束后,所有的后台线程会自动退出。
标签:main,Java,Thread,线程,多线程,true,public,TestThread From: https://blog.51cto.com/u_16298170/7947924