案例: 演示线程控制之 守护线程..
涉及到的Thread类中的成员方法:
public void setDaemon(boolean falg); 设置线程为守护/非守护线程, true: 守护线程, false: 非守护线程.
细节:
1. 每个线程默认都是: 非守护线程.
2. 当非守护线程执行结束的时候, 所有和它关联的 守护线程也要立即结束.
但是因为CPU执行具有 随机性, 延迟性, 所以我们很难看到 "立即"这个效果.
3. 记忆:
多线程的执行具有随机性和延迟性, 这是因为 CPU在做着高效的切换.
*/
public class Demo01 {
public static void main(String[] args) {
//1. 创建两个线程对象.
MyThread mt1 = new MyThread("关羽");
MyThread mt2 = new MyThread("张飞");
//2. 设置上述的两个线程为: 守护线程.
mt1.setDaemon(true);
mt2.setDaemon(true);
//3. 设置当前线程(主线程)的名字为: 刘备.
Thread.currentThread().setName("刘备");
//4. 开启两个守护线程.
mt1.start();
mt2.start();
//5. 通过非守护线程, 打印0-10之间的数字.
for (int i = 0; i < 10; i++) {
System.out.println(Thread.currentThread().getName() + ".." + i);
}
//自定义线程类, 用来打印 100个数字.
public class MyThread extends Thread{
//调用父类的构造方法
public MyThread() {
}
public MyThread(String name) {
super(name);
}
@Override
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println(getName() + " ...." + i);
}
}