多线程中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方法的含义的主要内容,如果未能解决你的问题,请参考以下文章