美文网首页
多线程-join

多线程-join

作者: QQ_33e9 | 来源:发表于2019-03-02 14:18 被阅读0次

join:加入线程,顺序执行。

官方解释:当我们调用某个线程的这个方法时,这个方法会挂起调用线程,直到被调用线程结束执行,调用线程才会继续执行。

即:在main线程中调用子线程的join方法,join方法会挂起main线程,直到子线程结束执行,main线程才会继续执行。

示例:子线程加入main线程,子线程执行后再执行main线程。

public class MyJoinThread extends Thread{

    public void run() {

        System.out.println("I am join thread");

    }

}

public class Main{

        public static void main(String args[]) {

            Thread joinThread = new MyJoinThread();

            try {

              joinThread.start();

                joinThread.join();

            } catch(InterruptedException e) {

                e.printStackTrace();

            }

            System.out.println("I am main  thread");

         }

}

下面是join方法源码:

public final synchronized void join(long millis) throws InterruptedException {

    long base = System.currentTimeMillis();

    long now =0;

    if (millis <0) {

        throw new IllegalArgumentException("timeout value is negative");

    }

    //当timeout为0时,即一直等到子线程执行完毕后再执行主线程

    if (millis ==0) {

        //循环判子线程是否active,子线程是active则让主线程等待

        while (isAlive()) {

            wait(0);

        }

    }

    //当timeout不为0时,即让主线程等待timeout时间后就继续执行

    else {

          //循环判子线程是否active,子线程是active则让主线程等待,如果超出timeout时间,则不再等待

        while (isAlive()) {

            long delay = millis - now;

            if (delay <=0) {

                break;

            }

            wait(delay);

            now = System.currentTimeMillis() - base;

        }

    }

}

相关文章

  • Android:多线程总结

    多线程总结 问题一:多线程join如何实现? join用来等待一个线程完成。join方法会调用wait函数,这个w...

  • 多线程

    多线程技术 多线程技术2 多线程应用 server client join函数

  • (三)线程的并发工具类

    Fork-Join java 下多线程的开发可以我们自己启用多线程,线程池,还可以使用fork-join ,for...

  • 并发

    保证多线程的顺序执行 方式1:通过join方法保证多线程的顺序join作用:让主线程等待子线程结束后才能继续运行 ...

  • Day18-多线程

    1.多线程技术1 2.多线程技术2 3.多线程技术 4.join函数

  • day18-多线程

    recode 一、多线程技术1 二、多线程技术2 三、client 多线程应用 四、join函数 耗时操作

  • 多线程join

    x.join就是使当前线程进入阻塞,等待x线程销毁后再继续往下执行。

  • 多线程-join

    join:加入线程,顺序执行。 官方解释:当我们调用某个线程的这个方法时,这个方法会挂起调用线程,直到被调用线程结...

  • java并发工具类

    等待多线程完成 主线程等待所有线程完成工作 实现 thread.join()方法 原理 join 用于让当前执行线...

  • Java 面试题

    java多线程实现主线程等待子线程执行完问题 1、使用Thread的join()方法,join()方法会阻塞主线程...

网友评论

      本文标题:多线程-join

      本文链接:https://www.haomeiwen.com/subject/wiveuqtx.html