繼承 Thread 重寫 run(),或實現 Runnable 接口。啟動後 JVM 自動調用 run()。
new Thread(),僅對象,無資源,只能 start() 或銷毀start() 分配資源、排隊等待 CPU,非持續佔用 CPUsuspend()、sleep()、wait()、I/O 等待run() 結束或 stop() 強制終止為其他線程服務(如 GC、圖片預加載),run() 通常為無限循環等待請求。JVM 僅剩守護線程時自動退出。
ThreadGroup 批量管理線程(啟動/掛起/銷毀),線程創建時指定或歸入默認組,終身不可變更。
synchronized 隱式實現加鎖/解鎖(方法級或塊級)// 線程1 生產數據
synchronized void produce() {
// ... 訪問共享區 ...
available = true;
notify(); // 喚醒消費者
}
// 線程2 消費數據
synchronized void consume() {
while (!available) {
try { wait(); } catch (InterruptedException e) {}
}
// ... 訪問共享區 ...
}
wait() 釋放鎖並進入非運行態;notify() 喚醒一線程重新爭搶鎖。
線程是 Java 核心特性,同步互斥雖不如系統級豐富,但合理使用 synchronized、wait/notify、優先級、守護線程、線程組,配合死鎖預防原則,足以構建健壯併發程序。