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
    ========结束=========

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

  • 相关阅读:
    hadoop作业
    爬虫综合大作业
    爬取全部校园新闻
    理解爬虫原理
    中文词频统计与词云生成
    复合数据类型,英文词频统计
    字符串操作、文件操作,英文词频统计预处理
    了解大数据的特点、来源与数据呈现方式
    Hadoop综合大作业
    分布式文件系统HDFS
  • 原文地址:https://www.cnblogs.com/gnivor/p/4686110.html
Copyright © 2011-2022 走看看