美文网首页
线程学习之——线程同步(守护线程和join)

线程学习之——线程同步(守护线程和join)

作者: 牛在A和C之间 | 来源:发表于2020-08-09 13:19 被阅读0次

目录
1、介绍setDaemon以及案例辅助理解,作为线程同步的问题引入
2、介绍join(线程同步)

1、
例子一:当setDaemon(False)为False时候,主线程运行结束,子线程会继续执行自己的任务,直到自己的任务结束。

import threading
import time

def thread():
    time.sleep(2)
    print('---子线程结束---')

def main():
    t1 = threading.Thread(target=thread)
    t1.start()
    print('---主线程--结束')

if __name__ =='__main__':
    main()
#执行结果
---主线程--结束
---子线程结束---

例子二、setDaemon(True) 当我们使用setDaemon(True)时,这是子线程为守护线程,主线程一旦执行结束,则全部子线程被强制终止

import threading
import time
def thread():
    time.sleep(2)
    print(’---子线程结束---')
def main():
    t1 = threading.Thread(target=thread)
    t1.setDaemon(True)#设置子线程守护主线程
    t1.start()
    print('---主线程结束---')

if __name__ =='__main__':
    main()
#执行结果
---主线程结束--- #只有主线程结束,子线程来不及执行就被强制结束

2.join()线程同步
join(线程同步) join 所完成的工作就是线程同步,即主线程任务结束以后,进入堵塞状态,一直等待所有的子线程结束以后,主线程再终止。

import threading
import time

def thread():
    time.sleep(2)
    print('---子线程结束---')

def main():
    t1 = threading.Thread(target=thread)
    t1.setDaemon(True)
    t1.start()
    t1.join(timeout=1)#1 线程同步,主线程堵塞1s 然后主线程结束,子线程继续执行
                        #2 如果不设置timeout参数就等子线程结束主线程再结束
                        #3 如果设置了setDaemon=True和timeout=1主线程等待1s后会强制杀死子线程,然后主线程结束
    print('---主线程结束---')

if __name__=='__main___':
    main()

关于线程的同步、互斥锁、死锁,参考

python同步、互斥锁、死锁

TCP的三次握手与四次挥手理解及面试题(很全面)
https://blog.csdn.net/qq_38950316/article/details/81087809

相关文章

  • 线程学习之——线程同步(守护线程和join)

    目录1、介绍setDaemon以及案例辅助理解,作为线程同步的问题引入2、介绍join(线程同步) 1、例子一:当...

  • 停止线程,守护线程, join方法

    停止线程 守护线程 join方法

  • 线程总结

    daemon守护线程 当主线程执行完成后,守护线程不管是否完成,立即终止。 join 当前主线程等待子线程执行完成...

  • 2018-09-19 守护线程与非守护线程

    什么是守护线程、非守护线程? 什么是守护线程,和main有关。 用户线程(非守护线程): 守护线程,有一个特征,和...

  • java并发之守护线程

    java中有两种线程,用户线程和守护线程用户线程:主线程停止时,用户线程不会停止守护线程:主线程停止时,守护线程也...

  • iOS开发之GCD多线程一

    1. 多线程的一些相关概念 1.1 进程和线程:操作系统学习笔记之进程与线程 1.2 同步和异步 同步任务:在执行...

  • join和守护线程

    下面仅以多进程为例: 知识点一:当一个进程启动之后,会默认产生一个主线程,因为线程是程序执行流的最小单元,当设置多...

  • java线程join方法使用方法简介

    本博客简介介绍一下java线程的join方法,join方法是实现线程同步,可以将原本并行执行的多线程方法变成串行执...

  • java线程分类

    守护线程 java中有两类线程,用户线程(User Thread)和守护线程(Daemon Thread)。 守护...

  • Java多线程 -- 03 控制线程

    目录导读 join线程:join 后台线程(Daemon Thread) 线程睡眠:sleep 线程让步:yiel...

网友评论

      本文标题:线程学习之——线程同步(守护线程和join)

      本文链接:https://www.haomeiwen.com/subject/odyhdktx.html