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();
        }
    }
  • 相关阅读:
    GIT(6)----fork和clone的区别,fetch与pull的区别
    Linux的本地时间和网络时间同步
    ROS知识(19)----写一个简单的pluginlib例子
    JS中关于闭包和this的指向
    hasOwnProperty()与in操作符的区别
    js判断对象的属性是原型的还是实例的
    JavaScript函数的中实参个数和形参个数的获取
    justify-content 定义子元素在父元素水平位置排列的顺序
    flex弹性盒模型
    让子元素在父元素中水平居中align-items
  • 原文地址:https://www.cnblogs.com/zjdbk/p/8971407.html
Copyright © 2011-2022 走看看