守护线程

守护线程(后台线程):在一个进程中如果只剩下 了守护线程,那么守护线程也会死亡。

需求: 模拟QQ下载更新包。

一个线程默认都不是守护线程。

package cn.itcast.thread;
 
public class Demo7 extends Thread {
    
    public Demo7(String name){
        super(name);
    }
    
    @Override
    public void run() {
        for(int i = 1 ; i<=100 ; i++){
            System.out.println("更新包目前下载"+i+"%");
            if(i==100){
                System.out.println("更新包下载完毕,准备安装..");
            }
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
    
    public static void main(String[] args) {
         Demo7 d = new Demo7("后台线程");
         d.setDaemon(true); //setDaemon() 设置线程是否为守护线程,true为守护线程, false为非守护线程。
        // System.out.println("是守护线程吗?"+ d.isDaemon()); //判断线程是否为守护线程。
         d.start();
         
         for(int i = 1 ; i<=100 ; i++){
             System.out.println(Thread.currentThread().getName()+":"+i);
         }
         
    }

}

炒菜案例

join方法。 加入

package cn.itcast.thread;

//老妈
class  Mon extends Thread{
    
    public void run() {
        System.out.println("妈妈洗菜");
        System.out.println("妈妈切菜");
        System.out.println("妈妈准备炒菜,发现没有酱油了..");
        //叫儿子去打酱油
        Son s= new Son();
        s.start();
        try {
            s.join();  /加入。 一个线程如果执行join语句,那么就有新的线程加入,执行该语句的线程必须要让步给新加入的线程先完成任务,然后才能继续执行。
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        
        System.out.println("妈妈继续炒菜");
        System.out.println("全家一起吃饭..");     
    }
} 

class Son extends Thread{
    
    @Override
    public void run() {
        System.out.println("儿子下楼..");
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("儿子一直往前走");
        System.out.println("儿子打完酱油了");
        System.out.println("上楼,把酱油给老妈");
    }
}

public class Demo8 {
    
    public static void main(String[] args) {
        Mon m = new Mon();
        m.start();
        
        
        
    }
}

你可能感兴趣的:(守护线程)