一、join 方法的主要作用是阻塞, 阻塞的对象是谁?

答:阻塞的对象是主线程,可以达到控制主线程什么时候结束的作用。

1、没有join

此时主线程和子线程相当于齐头并进,主线程不会等待子线程执行完了再结束,即不会阻塞

实验代码:

# coding: utf-8
# 测试多线程中join的功能
import threading, timedef doWaiting():print('start waiting1: ' + time.strftime('%H:%M:%S') + "\n" )time.sleep(3)print('stop waiting1: ' + time.strftime('%H:%M:%S') + "\n")def doWaiting1():print('start waiting2: ' + time.strftime('%H:%M:%S') + "\n")time.sleep(8)print('stop waiting2: ', time.strftime('%H:%M:%S') + "\n")if __name__ == '__main__':tsk = []thread1 = threading.Thread(target = doWaiting)thread1.start()tsk.append(thread1)thread2 = threading.Thread(target = doWaiting1)thread2.start()tsk.append(thread2)# print('start join: ' + time.strftime('%H:%M:%S') + "\n")# for tt in tsk:#     tt.join()print('end main thread: ' + time.strftime('%H:%M:%S') + "\n")

执行结果及分析:

2、有join

当主线程内的子线程都start后,主线程会阻塞并等待子线程执行完才继续执行,直观的表现是:子线程都start后,主线程若还有未执行的代码,此时不会继续执行剩余代码,而是等待子线程都执行完后再执行
if __name__ == '__main__':tsk = []thread1 = threading.Thread(target = doWaiting)thread1.start()tsk.append(thread1)thread2 = threading.Thread(target = doWaiting1)thread2.start()tsk.append(thread2)print('start join: ' + time.strftime('%H:%M:%S') + "\n")for tt in tsk:tt.join()print('end main thread: ' + time.strftime('%H:%M:%S') + "\n")

执行结果及分析:

3、有join且传入阻塞时间time

主线程最长阻塞时间: 子线程数*join传入参数time,当每个子线程都执行了time时间甚至更长时,主线程才有可能达到这么长的阻塞时间。

注意:即使是主线程结束阻塞后执行完剩余代码,子线程也会继续执行,而不会随着主线程的结束而终止。

if __name__ == '__main__':tsk = []thread1 = threading.Thread(target = doWaiting)thread1.start()tsk.append(thread1)thread2 = threading.Thread(target = doWaiting1)thread2.start()tsk.append(thread2)print('start join: ' + time.strftime('%H:%M:%S') + "\n")for tt in tsk:tt.join(3)print('end main thread: ' + time.strftime('%H:%M:%S') + "\n")

结果分析;

python 的 Thread.join方法相关推荐

  1. java并发编程之thread.join()方法详解

    thread.join()方法的作用:保证线程的执行结果的可见性.原理是通过阻塞主线程实现的. 代码Demo如下: public class ThreadJoinDemo {public static ...

  2. 高并发编程-Thread#join方法的使用及使用场景分析

    文章目录 含义 方法及示例 void join() void join(long millis) join(long millis, int nanos) 使用场景分析 含义 翻看下源码的注释: Wa ...

  3. python中的join方法

    描述 Python中的join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串. 语法 'sep'.join(sequence) 参数 sequence:要连接的元素序列,可以是元组.列 ...

  4. python里的join方法_python中join()方法介绍

    描述 Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串. 语法 join()方法语法: str . join ( sequence ) 参数 sequence -- ...

  5. Thread.Join()方法的理解

    关于C#中Thread.Join()的一点理解 今天是第一次在C#中接触Thread,自己研究了一下其中Thread.Join()这个方法,下面谈谈自己的理解. Thread.Join()在MSDN中 ...

  6. python join_Python中join()方法的用法

    Python中join()方法的主要作用是以特定的字符或字符串作为分隔符(字符串)将若干字符串拼接在一起.其作用的对象可以是单独的一个字符串,也可以是一个字符串元组,字符串列表.字符串集合或字符串字典 ...

  7. python join_python中join()方法介绍

    描述 Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串. 语法 join()方法语法:str.join(sequence) 参数 sequence -- 要连接的元 ...

  8. Python 字符串的join方法

    标题 字符串操作中的join方法 通常,我们拿到一个字符串后,需要对字符串进行处理加工,也就是说数据的清洗后,我们才可以使用,常用的字符串操作广泛应用在网络爬虫以及web应用开发中,以及服务器运维等方 ...

  9. python 线程类 threading.Thread.join() 方法 (自闭,不让别人进来了)

    def join(self, timeout=None):"""Wait until the thread terminates. 等待线程终止.This blocks ...

最新文章

  1. php生成pdf乱码_php+tcpdf生成pdf: 中文乱码
  2. 一步一步部署SSIS包图解教程1
  3. 牛客 - 二分(差分)
  4. 机器学习实战的P264中代码对应的公式推导
  5. 如何使用War包部署Tomcat
  6. 选择排序(直接选择、堆)
  7. Sentinel底层LongAdder的计数实现
  8. Linux进程被视为文件,Linux下如何知道文件被那个进程写
  9. 基于JAVA+SpringMVC+Mybatis+MYSQL的课堂考勤系统
  10. 中国丝裂原活化蛋白激酶9市场趋势报告、技术动态创新及市场预测
  11. 浪潮成立Inspur DevOps Lab:以应用开发和平台服务打造开发者生态
  12. java socket 异常处理_java.net.SocketException四大异常解决方案
  13. 从面试官甄别项目经验的角度,说说如何在简历中写项目经验(java后端方向)
  14. 每日学习, 特征方程的复根
  15. 企业运维,至少包括如下几个大方面: 1,桌面运维(以windows为主,工资偏低,桌面运维经理可以达到8K到10K,很多人在公司里干的就是安装windows系统,windows里的QQ坏了重装下,砸个
  16. HDUOJ 2059 龟兔赛跑——
  17. Matlab 火焰识别技术
  18. Atmel爱特梅尔AT89S52单片机开发实训装置,QY-DPJ12
  19. 伸手摘星,未必如愿,但不会弄脏你的手……
  20. Unity3D小技巧

热门文章

  1. ETL数据交换平台,支持多种实时数据流接入
  2. OpenMLDB 进阶使用攻略和高级特性介绍
  3. offsetParent与parentElement
  4. Dictionary与KeyValuePair的区别
  5. TSA优化算法——模仿航海过程中外套的喷气推进和蜂群行为(Matlab代码实现)
  6. Guava ---- Ordering排序工具
  7. 高低温霍尔效应测试系统
  8. 频谱图水印matlab,插件系列--简单水印(watermark-dom)和算法水印(频域方式图片合并)实现...
  9. oracle千万行update优化,Oracle的update优化
  10. PS2021神经滤镜Neural Filters离线安装包 亲测可用