码迷,mamicode.com
首页 > 编程语言 > 详细

多线程中join方法的含义

时间:2017-09-14 18:38:31      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:调用   extends   情况   thread   start   防止   作用   new   pre   

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方法的含义

标签:调用   extends   情况   thread   start   防止   作用   new   pre   

原文地址:http://www.cnblogs.com/eleven24/p/7521611.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!