zoukankan      html  css  js  c++  java
  • 43. 守护线程 和 join方法

    1.守护线程(后台线程):
                我们在使用一款软件的时候,有的软件会让我们在不知道的情况下下载一些东西,那么这个就是后台线程。
                一般用于提高软件的下载量(也就是赚取一些广告费)
                
                setDaemon(boolean b)    设置是否为守护线程
                isDaemon()          返回是否为守护线程(是true否false)
    注意:当程序停止运行的时候,守护线程也必须停止

    下面我们来模拟使用qq,然后后台下载一款软件

    public class Demo11 implements Runnable{
        @Override
        public void run() {
            for (int i = 1; i <= 100; i++) {
                System.out.println("目前下载"+i+"%");
            }
        }
        public static void main(String[] args) {
            
            Demo11 d = new Demo11();
            Thread thread = new Thread(d);
            thread.setDaemon(true);//设置为守护线程
            thread.start();
            //当i为100时qq程序停止
            for (int i = 0; i < 100; i++) {
                System.out.println("使用qq中"+i);
                
            }
        }
    }

    2.join 加入:

        当在一个线程任务体(run)中使用此方法时,必须要等调用join方法的线程执行完成任务后,这个任务体才能继续执行

    代码实例: 

    class Thread2 implements Runnable{
        @Override
        public void run() {
            for (int i = 0; i < 20; i++) {
                System.out.println(Thread.currentThread().getName()+":"+i);
            }    
        }
    }
    
    public class Demo12 implements Runnable{
        @Override
        public void run() {
            for (int i = 0; i < 100; i++) {
                if(i==30) {
                    Thread2 t = new Thread2();
                    Thread thread = new Thread(t,"加入的线程");
                    thread.start();
                    try {
                        thread.join();//加入一个线程
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
                System.out.println(Thread.currentThread().getName()+":"+i);
            }
        }
        
        public static void main(String[] args) {
            Demo12 d = new Demo12();
            Thread thread = new Thread(d,"被加入的线程");
            thread.start();
        }
    }
  • 相关阅读:
    YbtOJ:NOIP2020 模拟赛B组 Day10
    洛谷11月月赛Ⅱ-div.2
    P1494 [国家集训队]小Z的袜子
    [模板]莫队/P3901 数列找不同
    P4145 上帝造题的七分钟2 / 花神游历各国
    P4109 [HEOI2015]定价
    P4168 [Violet]蒲公英
    分块
    P3378 【模板】堆(code)
    网络基础——网络层
  • 原文地址:https://www.cnblogs.com/zjdbk/p/8971407.html
Copyright © 2011-2022 走看看