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();
        }
    }
  • 相关阅读:
    Go入门笔记-22 访问sqlite3数据库
    Go入门笔记-21 访问consul
    Docker中sh提示符无法回退
    Go入门笔记-20 访问redis
    Docker进阶学习-1
    Musl-libc库编译
    修复 Could not find class [org.springframework.cloud.client.loadbalancer.LoadBalancerProperties]
    Oracle DBLINK 简单使用
    js几种escape()解码与unescape()编码
    解决浏览器图片缓存问题(图片不能及时变过来)
  • 原文地址:https://www.cnblogs.com/zjdbk/p/8971407.html
Copyright © 2011-2022 走看看