Java 線程優先級範圍 1–10,數值越高理論上獲得 CPU 時間片機會越大。但 JVM 規範僅建議優先調度高優先級線程,具體行為取決於底層作業系統調度策略,且多數 OS 支援的優先級層級遠少於 10 個,導致優先級僅能作為粗略控制手段。
setPriority(int) / getPriority() 運行時調整❌ 依賴優先級控制關鍵業務邏輯執行順序
❌ 假設高優先級線程一定先執行完
❌ 忽略作業系統調度器的最終決定權
wait() / notify() / notifyAll()CountDownLatch、CyclicBarrier、Semaphore(JUC 套件)Thread.yield():提示調度器當前線程願意讓出 CPUThread.sleep():釋放 CPU 指定時間ExecutorService executor = Executors.newFixedThreadPool(4);
// 提交任務而非直接操控線程
executor.submit(() -> { /* 高優先級任務 */ });
executor.submit(() -> { /* 低優先級任務 */ });
| 場景 | 建議 |
|---|---|
| 計算密集型、單 CPU | 多線程無提升,甚至因上下文切換降低效能 |
| 計算密集型、多 CPU | 原生線程可並行跑滿多核心 |
| I/O 密集型(網路、資料庫、檔案) | 多線程顯著提升吞吐量 |
| GUI/伺服器需同時響應多用戶 | 必要,避免阻塞主線程導致界面凍結 |