執行緒池的五個狀態:
running:可以接受新的任務,也可以處理阻塞佇列裡的任務
shutdown:不能接受新的任務,可以處理阻塞佇列裡的任務,
running
狀態下呼叫
shutdown()
函式會裝變成
shutdown
狀態stop:不能接受新的任務,也不能處理阻塞佇列裡的任務,
running
狀態和shutdown
狀態呼叫
shutdownnow()
函式會轉變為
stop
狀態tidying:所有的任務已經終止,並且有效執行緒數為
0,若使用者再該狀態需要進行一些操作,可重寫
terminated()
函式,執行完
terminated()
函式之後會進入
terminated
狀態terminated:執行緒池徹底終止
程序的狀態
新建狀態:為乙個新程序建立建立pcb
就緒狀態:程序所有資源已經就緒,等待cpu時間
執行狀態:就緒狀態的程序獲得了cpu時間
阻塞狀態:等待某個事件
終止狀態:pcb清零,並將
pcb空間返回系統
就緒——》執行:獲得cpu
時間執行——》就緒:時間片用完
執行——》阻塞:執行程序因為某個等待事件進入了阻塞狀態,入i/o
阻塞——》就緒:某個等待事件已經完成,比如i/o
完成
執行緒的五大狀態
新建狀態(new):執行緒剛剛開始新建,程式還未開始執行**。
就緒狀態(runnable):乙個新建的執行緒並不自動執行,呼叫
start()
方法後進入就緒狀態
執行狀態(running):處於就緒狀態的程序獲得
cpu時間後進入執行狀態,在執行狀態下真正開始執行
run()
方法阻塞狀態(blocked):乙個執行狀態的執行緒可能由於一下原因進入阻塞狀態
(1) 應為io被阻塞
(2) 呼叫了sleep()方法
(3) 和其他執行緒搶奪乙個鎖
(4) 等待乙個觸發條件
處於阻塞狀態的執行緒暫時讓出cpu時間,其他處於阻塞狀態的執行緒可以獲得
cpu時間進入執行狀態
死亡狀態(dead):進入死亡狀態的原因:
(1) 正常執行完run()方法
未捕獲某個異常而進入死亡狀態
程序和執行緒
程序是資源分配的最小單位,執行緒是cup排程的最小單位
乙個程序由多個執行緒組成
程序之間相互獨立,執行緒之間共享記憶體空間
程序池 執行緒池
程序池和執行緒池相似,所以這裡我們以程序池為例介紹,下面對程序池的討論完全適用於執行緒池 如果沒有特殊宣告 程序池是由伺服器預先建立的一組子程序,這些子程序的數目在3 10個之間 典型情況 執行緒池的數量應該和cpu數量差不多。程序池中的所有子程序都執行者相同的 並具有相同的屬性。因為程序池在伺服器...
執行緒池 程序池
執行緒池 程序池 池子解決什麼問題?1.建立 銷毀執行緒伴隨著系統開銷,如果過於頻繁會影響系統執行效率 2.執行緒併發數量過多,搶占系統資源,從而導致系統阻塞甚至宕機 3.能夠剛好的控制和管理池子裡面的執行緒和程序 concurrent.futures模組提供了高度封裝的非同步呼叫介面 thread...
程序池, 執行緒池
知識儲備 池 裝載固定數量介質,該介質值得是程序或者執行緒 為什麼要用?讓機器在自己可承受的範圍內去保證乙個高效的工作 from concurrent.futures import processpoolexecutor,threadpoolexecutor pool processpoolexec...