join


t.start()
t.join()

Wait until the thread terminates.

This blocks the calling thread until the thread whose join() method called terminates -- either normally or through an unhandled or until the optional timeout occurs.

将子线程join之后,主线程会等待这些join的子线程结束之后才结束.

join会阻塞


for tid in range(2):
t = threading.Thread(target=my_counter)
t.start()
t.join()

上面这段代码其实不该算是多线程.从上面引用的原文描述就说过: Wait until the thread terminates.

上面的代码当执行到join的时候,程序就阻塞住了...,它在等待当前这个子线程执行完成之后才开始下一个循环,开始start下一个子线程.这是顺序执行的.

正确使用join的方式


thread_array = {}
for tid in range(2):
t = threading.Thread(target=my_counter)
t.start()
thread_array[tid] = t
for i in range(2):
thread_array[i].join()

要让所有的t.start()调用之后再去join它们.

setDeamon

setDeamon设置为True之后,主线程退出,主线程的所有子线程都会被迫退出.

setDeamon设置为False之后,主线程退出,主线程的所有子线程依然可以继续运行.

setDeamon必须在线程start之前设置.

有join的情况下,主线程会等待它的子线程完成之后再退出,自然setDeamon设置成True或者False都无关紧要.

最新文章

  1. xUtils 3.0 post使用详解
  2. https问答篇
  3. 24个很赞的 Node.js 免费教程和在线指南
  4. 关于http协议的理解
  5. Oralce11 客户端的安装和 PlSql Developer 的配置
  6. Oracl 动态执行表不可访问,本会话的自动统计被禁止
  7. 通过xib创建控制器
  8. 对TextView设置drawable,用setCompoundDrawables方法实现
  9. bzoj2257 [Jsoi2009]瓶子和燃料 最大公约数
  10. attr与prop html与text
  11. 01背包 || BZOJ 1606: [Usaco2008 Dec]Hay For Sale 购买干草 || Luogu P2925 [USACO08DEC]干草出售Hay For Sale
  12. Ue4管线中的灯光信息
  13. Delphi编程中动态菜单要点归纳
  14. I/O 接口及其编址方式
  15. 图片轮滚形式A
  16. PAT甲题题解-1073. Scientific Notation (20)-字符串处理
  17. C# new和初始化
  18. 2018-2019-1 20189218《Linux内核原理与分析》第四周作业
  19. 基于MATLAB的中值滤波算法实现
  20. Eclipse C++,Cygwin 64,gcov,lcov 单体&覆盖率测试环境搭建笔记

热门文章

  1. break statement not within loop or switch报错
  2. 交通网最短路径长 dp c++
  3. PHP array_keys() 函数
  4. Blob分析之board _components.hdev
  5. 5.15 牛客挑战赛40 C 小V和字符串 数位dp 计数问题
  6. java进阶(3)--接口
  7. Axios源码分析
  8. JS 动画笔记
  9. javascript逻辑判断与循环笔记
  10. Docker 快速搭建 LDAP