后台线程, 是指在程序运行的时候在后台提供一种通用服务的线程,这种线程并不属于不可缺失的部分, 但是为什么还要将一个线程设置为后台线程呢。 各位请听我
个人讲解 ps:若有理解不对请各位提出.
我们都知道Java为线程提供了Runnable接口 和 Thread类。 若要将线程设置为后台线程可调用Thread的 setDaemon()方法。
Thread t = new Thread();
t.setDaemon(true); //true 为后台线程 反之 参数里面若为 false 则为后台线程.
但是此发法一定要在线程开始执行之前设置 否则会抛出异常。
之所以有的时候要在开辟的线程当中设置线程为后台线程是因为后台线程会随着程序的结束而结束。 而前台线程并不会随着程序的结束而结束。 下面给出测试代码:
import java.util.*;
public class RunnableTest implements Runnable {
private String name;
public static void main(String args[]) {
RunnableTest r = new RunnableTest("thread1");
Thread t = new Thread(r);
t.setDaemon(true); //后台线程
t.start();
Scanner cin = new Scanner(System.in);
String y;
y=cin.next();
while(true)
{
if(y.equals("y"))
break;
}
System.out.println("end main");
}
public RunnableTest(String name) {
this.name = name;
}
public void run(){
try {
while(true) {
System.out.println(name);
Thread.sleep(200);
}
}
catch(Exception e) {
System.out.println("Exception");
}
}
}
在这里我们将setDaemon设置为true 也就是后台线程的时候 我们输入y线程会随着前台进程main而结束.任务管理器中的进程列表中的java.exe(也就是本程序的进程)结束。
而如果将参数设置为false 他会陷入死循环直到强制性关闭.