Thread.sleep(0)有什麼作用?

Thread.sleep(0):線程休眠0秒有什麼意義?既然是 Sleep 0 毫秒,那麼去掉該代碼前後有啥區別?

在回答上述問題之前,先來看一下操作系統CPU調度策略:

  • 時間片:所有的進程排成一個隊列。操作系統按照他們的順序,給每個進程分配一段時間,即該進程允許運行的時間。如果在時間片結束時進程還在運行,則CPU將被剝奪並分配給另一個進程。如果進程在時間片結束前阻塞或結束,則CPU當即進行切換。調度程序所要做的就是維護一張就緒進程列表,當進程用完它的時間片後,它被移到隊列的末尾。
  • 優先級:操作系統會根據進程的優先級(會根據特定的算法算出優先級)進行調度,即操作系統會把 CPU 交給優先級最高的進程。當進程執行完畢或者自己主動掛起後,操作系統就會重新計算一 次所有進程的優先級,然後再挑一個優先級最高的把 CPU 控制權交給他。

Thread.Sleep(0)的作用,就是“觸發操作系統立刻重新進行一次CPU競爭”,競爭的結果可能是當前線程仍然獲得CPU控制權,也可能是別的線程獲得CPU控制權。

本博客參考Thread.sleep(0)的意義& 多線程詳解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章