Java线程:
1. 用户线程/前台线程/普通线程:也就是平时code时, 默认情况下,直接 new Thr
ead()。 new Runnable()后的对象,没有设置 setDeamon(true) 的线程。
2. 后台进程:在构造线程之后,start() 函数启动前, 调用 setDeamon(true) 将线程设置为后台进程。
用户线程和后台进程之间的区别:
1. 后台线程会随着主程序的结束而结束。用户线程会在主线程结束之后继续运行。
2. Java中setDeamon(true)以后这个线程就是后台进程,相应的线程变为守护线程,依赖jvm系统,当jvm没有非守护线程时,也就是主程序运行结束,则守护线程全部退出,jvm退出。
public class RunnableTest implements Runnable {
private String name;
private long delay;
public static void main(String args[]) {
RunnableTest r = new RunnableTest("i am a thread", 500);
Thread t = new Thread(r);
t.setDaemon(true); //后台线程
System.out.println("t/f : " + t.isDaemon());
t.start();
System.out.println("end main");
}
public RunnableTest(String name, long delay) {
this.name = name;
this.delay = delay;
}
public void run() {
try {
while (true) {
System.out.println(name);
Thread.sleep(delay);
}
} catch (Exception e) {
System.out.println("Exception");
}
}
}