在乙個程序裡,執行緒的排程有搶占式和非搶占式的模式。
在搶占模式下,作業系統負責分配cpu時間給各個程序,一旦當前的程序使用完分配給自己的cpu時間,作業系統將決定下乙個占用cpu時間的是哪乙個執行緒。因此作業系統將定期的中斷當前正在執行的執行緒,將cpu分配給在等待佇列的下乙個執行緒。所以任何乙個執行緒都不能獨佔cpu。每個執行緒占用cpu的時間取決於程序和作業系統。程序分配給每個執行緒的時間很短,以至於我們感覺所有的執行緒是同時執行的。實際上,系統執行每個程序的時間有2毫秒,然後排程其他的執行緒,它同時維持著所有的執行緒和迴圈,分配很少量的cpu時間給執行緒。
排程是什麼意思?排程意味著處理器儲存著將要執行完cpu時間的程序的狀態和將來某個時間裝載這個程序的狀態而恢其執行。
搶占式有不足之處,乙個執行緒可以在任何給定的時間中斷另外乙個執行緒的執行。假設乙個執行緒正在向乙個檔案做寫入操作,而另外乙個執行緒中斷其執行,也向同乙個檔案做寫操作,就會出現寫入問題。
在非搶占式排程模式下,每個執行緒可以需要cpu多少時間就占用cpu多少時間。在這種排程方式下,可能乙個執行時間很長的執行緒使得其他所有需要cpu的執行緒「餓死」。在處理機空閒,即該程序沒有使用cpu時,系統可以允許其他的程序暫時使用cpu。占用cpu 的執行緒擁有對cpu的控制權,只有它自己主動釋放cpu時,其他的執行緒才可以使用cpu。
執行緒的排程
getpriortiy 返回執行緒的優先順序 setpriority int newpriortiy 改變執行緒的優先順序 執行緒建立時繼承父執行緒的優先順序 第優先順序只是獲得排程的概率低,並非一定是在高優先順序執行緒之後才被呼叫。package threadstudy public class ...
程序 執行緒間的通訊方式?程序排程方法?
1.共享記憶體 可以說這是最有用的程序間通訊方式。它使得多個程序可以訪問同一塊記憶體 空間,不同程序可以及時看到對方程序中對共享記憶體中資料得更新。這種方式 需要依靠某種同步操作,如互斥鎖和訊號量等。2.訊息佇列 訊息佇列 是在訊息的傳輸過程中儲存訊息的容器。具有寫許可權得程序可 以按照一定得規則向...
執行緒排程 執行緒池
1.每次new thread新建物件,效能查。2.執行緒缺乏統一管理,可能無限制的新建執行緒,相互競爭,有可能占用過多系統資源導致司機或oom out of memory 3.缺少更多的功能,如更多執行 定期執行 執行緒中斷。1.重用存在的執行緒,減少物件建立 消亡的開銷,效能好。2.可有效控制最大...