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