天天看點

Java并發程式設計的藝術之第四章讀後感

Question:為什麼IO密集型線程優先級需要高于CPU密集型線程?

原文中說到:

優先級高的線程配置設定時間片的數量要多于優先級低的線程。設定線程優先級時:

針對頻繁阻塞(休眠或者I/O操作)的線程需要設定較高優先級,

而偏重計算(需要較多CPU時間或者偏運算)的線程則設定較低的優先級,確定處理器不會被獨占。

這段話應該怎麼了解呢,可參考 IOS 如何高效的使用多線程。

其線上程優先級權衡中提到:通常來說,線程排程除了輪轉法以外,還有優先級排程的方案。

線上程排程時,高優先級的線程大機率會更早的執行。有兩個概念需要明确:

  • IO 密集型線程:頻繁等待的線程,等待的時候會讓出時間片。
  • CPU 密集型線程:很少等待的線程,意味着長時間占用着 CPU。

在特殊場景下,當多個 CPU 密集型線程霸占了所有 CPU 資源,

  • 讓 IO 密集型線程優先級高于 CPU 密集型線程。
  • 讓緊急的任務擁有更高的優先級。

繼續閱讀