zoukankan      html  css  js  c++  java
  • Java并发编程--多线程中的join方法详解

    Java Thread中, join()方法主要是让调用该方法的thread在完成run方法里面的部分后, 再执行join()方法后面的代码

    例如:定义一个People类,run方法是输出姓名年龄。

    class People implements Runnable{
        public String name ;
        public int age;
        public People(String name , int age){
            this.name =name;
            this.age = age;
        }
        @Override
        public void run() {
            
            System.out.println("开始输出");
            System.out.println("姓名"+name);
            System.out.println("年龄"+age);
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("========结束=========");
            
        }
        
    }

    如果main方法中不使用join 如下

    public static void main(String[] args) throws InterruptedException {
        People p1 = new People("张三",10);
        People p2 = new People("李四",11);
        Thread t1 = new Thread(p1);
        Thread t2 = new Thread(p2);
        t1.start();
        t2.start();    
    }

    那么输出为:

    开始输出
    开始输出
    姓名张三
    年龄10
    姓名李四
    年龄11
    ========结束=========
    ========结束=========

    可见两个线程是同时开始的。

    如果main方法中使用join,如下:

    public static void main(String[] args) throws InterruptedException {
        People p1 = new People("张三",10);
        People p2 = new People("李四",11);
        Thread t1 = new Thread(p1);
        Thread t2 = new Thread(p2);
        t1.start();
        t1.join();
        t2.start();
        t2.join();
        
    }

    输出

    开始输出
    姓名张三
    年龄10
    ========结束=========
    开始输出
    姓名李四
    年龄11
    ========结束=========

    可见是执行完了第一个线程之后再执行的第二个线程。

  • 相关阅读:
    es基本使用之查询数据
    python 时间格式转换
    Linux 使用scp命令定时将文件备份到另一台服务器
    Scrapy项目运行和debug断点调试
    Day042.绘制9个同心圆
    Day041.画蟒蛇-用函数来封装
    Day040.画蟒蛇-不加库前缀
    Day039.画蟒蛇
    Day038.用函数来进行温度转换
    Day037.带循环的温度转换
  • 原文地址:https://www.cnblogs.com/gnivor/p/4686110.html
Copyright © 2011-2022 走看看