public class ThreadDemo04_setDaemon {
public static void main(String[] args) {
setDaemonThread s1=new setDaemonThread();
setDaemonThread s2=new setDaemonThread();
s1.setName("张飞");
s2.setName("关羽");
s1.setDaemon(true);
s2.setDaemon(true);
//我把张飞,关羽定义为用户线程或者守护线程
//直接刘备活着的时候 他们两个才能或者
//也有一定的延迟
//就像坦克大战里面,基地是刘备,刘备死了一会,张飞,关羽也会死。
s1.start();
s2.start();
Thread.currentThread().setName("刘备");
//这里 是指当前线程 即这个main也是一个线程 。
for(int x=0;x<5;x++){
System.out.println(Thread.currentThread().getName()+x);
}
}
}
问题:
这里我用到了线程类的标记用户线程的方法。setDaemon,我把s1 s2标记为用户线程
。
这里 main方法 也是一个线程。
应该是抢占式的调用CPU,当main方法里面运行结束后
其他线程也会结束。结果应该是刘备,关羽,张飞交错出现。
但是我输出来结果却只有main方法里面的输出
刘备0
刘备1
刘备2
刘备3
刘备4
是为什么呢?
|
|