第一点threading中使用多线程两种方法:
1.使用回调
2.重写run方法
关于守护进程setDaemon以及join方法问题
(1)Python中默认setDaemon(false)是设置用户线程为守护线程
效果:当用户任务执行完毕后,用户线程退出,其他子线程依旧会执行,直到退出。
(2)当设置子线程为守护进程,即setDaemon(true)
效果:当用户任务执行完毕后,用户线程退出,其他子线程也会中断退出。
(3)使用join()方法后
效果:为了完成线程同步,即当用户任务执行完成后,主线程阻塞等待,直到子线程任务都执行完成才会退出。
(4)当然join()里面有个timeout参数
如果设置了守护进程setDaemon(true),则给一个timeout每个子线程,若时间到了,直接杀死子线程。
如果没有设置守护进程setDaemon(false),则给一个timeout给用户线程,不管其执行是否完毕,都会被kill,其他子线程依旧继续执行。
如果创建多个线程,注意多个线程join()的顺序问题。