一、守护线程
要理解守护线程(不分语言),这里有三个问题需要弄清楚:
- 守护线程顾名思义就是守护别的线程,守护谁呢?一个进程中的主线程,是任何进程中都一定会存在的东西
- 守护到什么时候呢?主线程运行结束的时候,被守护者都结束退出了,守护者自然没有存在的意义要终止了
- 与普通子线程有什么区别呢?普通子线程与主线程之间没有谁等待谁结束的关系,竞争地位等同,一个进程中可能是主线程先结束,主线程结束后,整个进程也要等待子线程运行结束后才终止退出。但是如果存在守护线程的话,主线程一旦结束,守护线程也会随之终止,整个进程终止退出,守护线程处于被动地位。也因为这个特点,守护线程一般用作公共服务,比如定时轮询的任务等,而不会用于处理业务逻辑,存储数据等类似工作以防主线程结束后意外终止造成的错误。
笔者表达能力欠佳,下面还是让代码(以python代码为例)说话,看看守护线程到底特殊在哪里:
# 首先定义两个线程:听音乐和看电影 存在 threads数组中
def music(song_name):
for i in range(3):
print "I was listening to song: %s %s" % (song_name, i)
time.sleep(2)
def movie(movie_name):
for i in range(3):
print "I was watching movie:%s %s" % (movie_name, i)
time.sleep(2)
threads &#