关于线程中的挂起join()

关于线程中的挂起join()

挂起是啥意思?没明白老师讲的意思

join()到底是用来干嘛的?

为什么要在start()之后还要写一个join()?不写行不行?不写会怎样?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好:

那样也可以,但是start()一个线程就join()去执行任务,那么主线程就要被阻塞,当执行完当前线程任务后再去start()一个线程并join(),实现不了并发效果。按线程顺序去执行,那么设置·线程体现不出他的意义。


http://img1.sycdn.imooc.com//climg/5d6dfd410001e65406900663.jpg

而先将所有的线程start()后,将所有的线程join则会出现下图的并发情况。

http://img1.sycdn.imooc.com//climg/5d6dfdca0001b60f06320679.jpg
如果我解决了同学的问题,请采纳!学习愉快^_^。

好帮手乔木 2019-09-03 11:27:49

同学你好:

挂起:主线程等待子线程执行完任务主线程再去执行的过程叫做将主线程挂起。

作用:多线程中的join( )方法表示阻塞主线程,即在子线程未返回的时候,主线程等待其执行完毕后再继续执行。

start()是将子线程的任务开启,为了先让子线程去执行任务,所以使用join()去将主线程挂起让子线程先执行。

http://img1.sycdn.imooc.com//climg/5d6ddc1b0001487507150696.jpg

一般主线程执行完毕后代表着这个程序执行完了,下图就是由于没有阻塞主线程,主线程先执行完毕,其他子线程才开始执行。

http://img1.sycdn.imooc.com//climg/5d6ddbd30001dec006570699.jpg

如果我的回答解决了您的疑惑,请采纳!学习愉快^_^。


  • 提问者 浪淘沙98 #1
    为什么不把挂起join直接放在开始start后面? 把挂起join直接放在开始start后面 和 在后面多写一个for in通过遍历来挂起join 有什么区别?
    2019-09-03 13:00:57
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
1.Python零基础入门
  • 参与学习           人
  • 提交作业       2727    份
  • 解答问题       8160    个

想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师