首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

Java 多線程編程精要(三):線程優先級、調度與多線程適用性判斷

     編輯:Java 程式設計入門

線程優先級與調度的局限性

Java 線程模型涉及動態可變優先級(1-10,數字大任務越緊急)。JVM 標準優先調度高優先級線程,但同優先級處理是隨機的,取決於底層 OS 策略:有的分時運行,有的運行到結束。Java 支援 10 級優先級,但底層 OS 支援較少,易造成混亂。優先級只能作粗略工具,最終控制靠明智使用 yield()。通常不要依賴優先級控制線程狀態。

是否使用多線程的決策框架

估算可並行運行的代碼量,記住關鍵點:

  1. 多線程不增加 CPU 能力。但若用 JVM 本地線程實現,不同線程可在多 CPU 機器不同處理器同時運行,充分利用多 CPU。
  2. 計算密集型、受 CPU 限制的應用,只有多 CPU 機器才能從更多線程受益。
  3. 等待緩慢資源(網絡、數據庫連接)或非交互式應用,多線程通常有利。
  4. 基於 Internet 的軟體必須是多線程的;否則用戶感覺響應遲鈍。開發支援大量客戶端的服務器時,多線程讓編程更容易:每個線程服務不同客戶/組,縮短響應時間。
  5. 某些程式員在 C 等無語言級線程支援的語言用過線程,往往對線程失去信心——Java 完全不同。

現代補充:虛擬線程

Java 21+ 引入虛擬線程,極大降低線程創建開銷,使「每請求一線程」模型在高併發 I/O 密集型場景成為現實,徹底改變了多線程適用性判斷。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved