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

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

  • 相关阅读:
    创建和查看数据库
    初识数据库
    类似京东商城客户端应用源码
    高仿拼多多应用源码
    读者汇app项目案例源码
    Win10系统配置Apache虚拟主机
    Firefox+PHPStorm 8+XDebug单步调试
    Swing带TrayIcon(托盘小图标)的Hello world示例
    HttpClient v4.5 简单抓取主页数据
    23种设计模式的代码分析
  • 原文地址:https://www.cnblogs.com/gnivor/p/4686110.html
Copyright © 2011-2022 走看看