守护线程有守护的使命,当别的线程没了的时候,守护线程也跟着没了。
public class SellThread implements Runnable {
private int num = 25;
@Override
public synchronized void run() {
// TODO Auto-generated method stub
while(true) {
if(num>0) {
try {
Thread.sleep(300);//卖一会儿休息一会儿
System.out.println(Thread.currentThread().getName()+"帮多啦A梦卖第"+num--+"个铜锣烧");
}catch(InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
public class SellTest {
public static void main(String[] args) throws InterruptedException {
SellThread t = new SellThread();
Thread daxiong = new Thread(t,"大雄");
Thread xiaojing = new Thread(t,"小静");
Thread panghu = new Thread(t,"胖虎");
//设置守护线程
daxiong.setDaemon(true);
xiaojing.setDaemon(true);
panghu.setDaemon(true);
daxiong.start();
xiaojing.start();
panghu.start();
for(int i = 0 ;i <4;i++) {
Thread.sleep(1000);
System.out.println(Thread.currentThread().getName()+"----------"+i);
}
}
}
Console:
大雄帮多啦A梦卖第25个铜锣烧
大雄帮多啦A梦卖第24个铜锣烧
大雄帮多啦A梦卖第23个铜锣烧
main----------0
大雄帮多啦A梦卖第22个铜锣烧
大雄帮多啦A梦卖第21个铜锣烧
大雄帮多啦A梦卖第20个铜锣烧
main----------1
大雄帮多啦A梦卖第19个铜锣烧
大雄帮多啦A梦卖第18个铜锣烧
大雄帮多啦A梦卖第17个铜锣烧
main----------2
大雄帮多啦A梦卖第16个铜锣烧
大雄帮多啦A梦卖第15个铜锣烧
大雄帮多啦A梦卖第14个铜锣烧
大雄帮多啦A梦卖第13个铜锣烧
main----------3
可以看到,当主线程运行完毕之后,守护线程也跟着完毕!