演员在前台演戏,许多事情职员在后台为演员供应做事,例如准备演出的服装和道具。同样的,后台线程指的是为其他线程供应做事的线程,也叫守护线程。Java虚拟机的垃圾回收线程是范例的后台线程,它卖力回收其他线程不再利用的内存。
后台线程的特点后台线程与前台线程相伴相随,只有当所有前台线程结束生命周期后,后台线程才会结束生命周期。只要有一个前台线程还没有运行结束,后台线程就不会结束生命周期。
主线程默认情形下是前台线程,由前台线程创建的线程默认情形下也是前台线程。调用Thread类的setDaemon(true)方法,就能把一个线程设置为后台线程。Thread类的isDaemon()方法用来判断一个线程是否是后台线程。
下面的示例代码中,machine线程作为后台线程,一直的按行输出“macine”
public class Machine extends Thread{
public void run() {
while (true)
System.out.println(\"大众macine\"大众);
}
public static void main(String[] args) throws InterruptedException {
Machine machine=new Machine();
machine.setDaemon(true);
machine.start();
System.out.println(\公众main end\公众);
}
}
只管machine现场的run()方法时无限循环,但只要其他线程都运行结束,Java虚拟机就会终止这个后台线程。
利用后台线程的把稳点Java虚拟机所能担保的是:当前台线程运行结束,如果后台线程还在运行,Java虚拟机会终止后台线程。此外,后台线程是否一定在前台线程的后面结束生命周期,还取决于程序实现,只有在线程启动前(即调用start()方法前),才能把它设置为后台线程。如果线程启动后,再调用setDaemon()方法,就会抛出IllegalThreadStateException非常。由前台线程创建的线程默认情形下仍旧是线程,由后台线程创建的线程仍旧是后台线程。目录:Java知识目录