無論是程序還是執行緒,都遵循:守護***會等待主***執行完畢後被銷毀
需要強調的是:執行完畢並非終止執行
1、對主程序來說,執行完畢指的是主程序**執行完畢
2、對主線程來說,執行完畢指的是主線程所在的程序內所有非守護執行緒統統執行完畢,主線程才算執行完畢
詳細解釋:
1、主程序在其**結束後就已經算執行完畢了(守護程序在此時就被**),然後主程序會一直等非守護的子程序都執行完畢後**子程序的資源(否則會產生殭屍程序),才會結束,
2、主線程在其他非守護執行緒執行完畢後才算執行完畢(守護執行緒在此時就被**)。因為主線程的結束意味著程序的結束,程序整體的資源都將被**,而程序必須保證非守護執行緒都執行完畢後才能結束。
驗證
from threading import thread
import time
def sayhi(name):
time.sleep(2)
print('%s say hello' %name)
if __name__ == '__main__':
t=thread(target=sayhi,args=('egon',))
t.setdaemon(true) #必須在t.start()之前設定
t.start()
print('主線程')
print(t.is_alive())
執行結果
主線程
true
主線程 守護執行緒 非守護執行緒
main,但不是守護執行緒。是指在程式執行的時候在後台提供一種通用服務的執行緒。如gc。也叫使用者執行緒,由使用者建立。主線程和守護執行緒一起銷毀 主線程和非守護執行緒互不影響。例如 package com.peng.thread 1 使用者執行緒 非守護執行緒 有主線程建立 2 守護執行緒和主線程...
執行緒 守護執行緒與非守護執行緒
什麼是守護執行緒?非守護執行緒好理解,就是程式中前端執行的執行緒,我個人理解為常用於處理主動事務的執行緒。守護執行緒 顧名思義,用來守護處理事務的執行緒。它主要執行在程式後端,最有代表的例子gc執行緒,就是守護執行緒。守護執行緒的特點 實現守護執行緒,驗證非守護執行緒結束時,守護執行緒也中斷。cre...
守護執行緒和非守護執行緒
基本概念 示例 非守護執行緒 public class mythread extends thread catch interruptedexception e system.out.println 執行緒 thread.currentthread getname 執行了 i 次 public st...