由於現在操作系統擁有強大的線程管理能力,Java不需要再進行獨立的線程管理和調度, JVM徹底將線程調度委托給操作系統
操作系統主流的線程調度方式: 基於CPU時間片
不同操作系統,不同CPU,線程的時間片是不一樣的
CPU性能中的 GHz是什么單位?
1GHz即十億赫茲, CPU的GHz指每秒多少GHz, 赫茲指交流電或電磁波頻率的一個單位, 這里可以說2GHz的CPU具有每秒處理20億電信號
假設時間片長度20ms, 在一個2GHz的CPU上, 那么其時間片的計算量: (20/1000)*20=4000萬次
一個時間片內的計算量是非常巨大的
線程只有得到時間片才能執行,沒有得到時間片就處於就緒狀態,等待系統分配時間片
線程的調度模型分為兩種: 分時調度 和 搶占式調度
分時調度: 輪流占有CPU,給線程平均分配時間片
搶占式調度: 按線程的優先級分配時間片,如果優先級相同,會隨機選擇一個
目前大部分操作系統都是使用搶占式調度, Java的線程委托給操作系統完成
unix : 分時調度.
linux: 將優先級調度, 時間片輪轉法調度,先進先出調度綜合起來應用. 不同進程的調度策略是不一樣的
windows: 搶占式調度