多线程中join方法的含义

Posted 白桂任的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程中join方法的含义相关的知识,希望对你有一定的参考价值。

1、作用:调用这个方法的时候,主进程会在这里停住,等待该线程进行完毕再继续往下执行。

如:不使用join的情况:

<?php

class Join extends Thread
{
    public function run()
    {
        sleep(3);
        echo __FUNCTION__ . PHP_EOL;
    }
}

$join = new Join();
$join->start();

echo ‘just a test‘ . PHP_EOL;

 输出:

just a test
run

 使用join:

<?php

class Join extends Thread
{
    public function run()
    {
        sleep(3);
        echo __FUNCTION__ . PHP_EOL;
    }
}

$join = new Join();
$join->start();
$join->join();

echo ‘just a test‘ . PHP_EOL;

  输出:

run
just a test

  我们可以发现,使用join的时候,最后的echo语句需要等待线程运行完毕再运行。

 

2、为什么要join?

想想这样一种情况,线程执行时间过长,而且在要在后续代码中使用线程运行结果,

这样我们就可以使用join,防止主线程比子线程先结束,或者后续代码在线程结束之前就运行了从而获取不到线程处理结果。

 

3、使用join会导致进程阻塞,这个阻塞并不是目的,只是表现。并不是为了阻塞线程而使用join。

 

4、fork/join

 

以上是关于多线程中join方法的含义的主要内容,如果未能解决你的问题,请参考以下文章

Java多线程学习:Join()

Java多线程-join的使用

Java多线程中的join方法

多线程等待所有子线程执行完使用总结——wait()和notify(),join()方法

Java多线程中join方法详解

多线程高并发编程 -- Fork/Join源码分析