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

Java 多執行緒程式設計精要:執行緒群組、訊號機制、守護執行緒

     編輯:Java 相關知識

執行緒群組

邏輯分組管理執行緒,支援批次操作:

ThreadGroup group = new ThreadGroup("WorkerGroup");
Thread t1 = new Thread(group, task, "Worker-1");
Thread t2 = new Thread(group, task, "Worker-2");

// 批次中斷
group.interrupt();
// 列舉成員
Thread[] threads = new Thread[group.activeCount()];
group.enumerate(threads);

執行緒間通訊:wait/notify 機制

必須在 synchronized 區塊內使用,針對同一個物件鎖:

// 等待條件
synchronized (lock) {
    while (!condition) {
        lock.wait(); // 釋放鎖並進入等待集合
    }
    // 條件滿足,繼續執行
}

// 通知條件變更
synchronized (lock) {
    condition = true;
    lock.notifyAll(); // 喚醒所有等待執行緒
}

關鍵差異

方法行為
wait()釋放鎖,進入等待集合,需 notify 喚醒
sleep()保持鎖,指定時間後自動喚醒
yield()讓出 CPU,同優先級執行緒可執行

屏障同步模式

多執行緒分階段計算,各階段需全部完成才能進入下一階段:

// 使用 CyclicBarrier (推薦)
CyclicBarrier barrier = new CyclicBarrier(N, () -> mergeResults());

// 每個執行緒
public void run() {
    phase1();
    barrier.await(); // 等待所有人完成 phase1
    phase2();
    barrier.await(); // 等待所有人完成 phase2
}

守護執行緒

  • setDaemon(true) 標記為守護執行緒
  • JVM 僅等待非守護執行緒結束
  • 典型用途:GC、JIT 編譯、監控、快取清理
  • 主執行緒結束時,守護執行緒會被強制終止

讓出 CPU:yield()

提示排程器當前執行緒願意讓出處理器,但不保證立即切換。適用於長時間計算任務主動降低優先級。

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