假设有两个线程:子线程(threaddemo)和主线程(main)如下所示:
package daemon;
/**
*
* @author sunchm
*
*/
public class Daemon {
public static void main(String[] args) {
ThreadDemo threaddemo = new ThreadDemo();
Thread threadson = new Thread(threaddemo);
//设置守护线程
threadson.setDaemon(true);
//启动线程
threadson.start();
System.out.println("bbb");
}
}
class ThreadDemo implements Runnable{
@Override
public void run() {
System.out.println("aaa");
while(true);//无限循环
}
}
子线程设置为守护线程(threadson.setDaemon(true);)运行如下:
守护线程和主线程有同样的生命周期,主死子(守护线程)必死。
子线程设置为非守护线程(threadson.setDaemon(false);)运行如下:
非守护线程和主线程无关联,主死子不一定(守护线程)死。这里说的不一定死是由于我的子线程中代码中有while(ture);语句,如果没有死循环语句子线程执行完也会死掉。