程序,執行緒池,執行緒

2022-06-26 16:15:14 字數 1601 閱讀 1814

執行緒池的五個狀態:

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...