Java中线程分为两大类,一类是用户线程,一类是守护线程(后台线程)。
守护线程中具有代表性的就是:垃圾回收线程(守护线程)。
守护线程的特点:一般守护线程是一个死循环,所有的用户线程只要结束,守护线程自动结束。
Java程序入口就是由JVM启动main线程,main线程又可以启动其他线程。当所有用户线程都运行结束时,JVM退出,进程结束。
注意:主线程main方法是一个用户线程。
守护线程另一个主要用处就是 定时任务。因为一个定时触发任务是无限循环的
class TimerThread extends Thread {
@Override
public void run() {
while (true) {
System.out.println(LocalTime.now());
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
break;
}
}
}
}
如果这个线程不是守护线程,那么此线程不结束,JVM进程就无法结束。
创建守护线程
Thread t = new MyThread();
t.setDaemon(true);
t.start();
注意:守护线程不能持有任何需要关闭的资源,例如打开文件等,因为虚拟机退出时,守护线程没有任何机会来关闭文件,这会导致数据丢失
网友评论