• Java中的后台线程和join方法


    /*守护线程(后台线程):在一个进程中如果只剩下 了守护线程,那么守护线程也会死亡。
    需求: 模拟QQ下载更新包。
    一个线程默认都不是守护线程。
    */
    public class Demo extends Thread {
        public Demo(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) {
             Demo d = new Demo("后台线程");
             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方法:

    /*
     join方法。 加入
    */
    
    //老妈
    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 Demo {
        public static void main(String[] args) {
            Mon m = new Mon();
            m.start();
        }
    }
  • 相关阅读:
    java中级或者高级面试题分享
    java常使用的框架
    spring的定时器
    ArrayList源码理解
    缓存 Memached
    ORM框架
    Web处理方式
    git使用
    Entity Framework
    .net 学习笔记2
  • 原文地址:https://www.cnblogs.com/qicao/p/9074235.html
Copyright © 2020-2023  润新知