守护线程与普通线程在写法上基本没有啥区别,调用线程对象的setDaemon(true),可以设置为守护线程。
守护线程使用情况较少,并非没用。比如说:Java的垃圾回收、内存管理都属于守护线程;还有我们在做数据库应用时,使用的数据库连接池,也有很多后台应用,监控连接个数、超时时间和状态等。
当设置setDaemon(true)时,必须在启动之前进行调用。
public class Thread_Daemon {
public static void main(String args[]){
Thread thread1=new InsideThreadExtend_Daemon();
Thread thread2=new Thread(new InsideDaemonThreadExtend_Daemon());
//设置守护线程
thread2.setDaemon(true);
thread2.start();
thread1.start();
}
}
class InsideThreadExtend_Daemon extends Thread{
@Override
public void run() {
for (int i=0;i<10;i++){
System.out.println("线程1第"+(i+1)+"次执行");
try {
Thread.sleep(7);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class InsideDaemonThreadExtend_Daemon implements Runnable{
@Override
public void run() {
for (int i=0;i< 9999999L;i++){
System.out.println("后台线程第"+(i+1)+"次执行");
try {
Thread.sleep(7);
}catch (Exception e){
e.printStackTrace();
}
}
}
}