進程擁有獨立地址空間,通訊昂貴(管道、共享內存等),上下文切換開銷大。線程(輕量級進程)共享進程地址空間,通訊高效(直接讀寫共享變量),切換快速。多線程可顯著提升交互性、GUI 響應、服務器吞吐。
Java 建立在 OS 級多線程之上,運行時與類庫均為線程安全設計。
採用搶佔式調度,線程五大狀態:
start() 或 stop()。Thread 重寫 run()Runnable 接口(單方法 run()),配合 new Thread(runnable)start() // 啟動線程,異步執行 run()
stop() // 強制停止(已棄用,不安全)
suspend()/resume() // 掛起/恢復(已棄用,易死鎖)
yield() // 讓出 CPU
sleep(ms) // 當前線程休眠
wait() // 釋放鎖進入等待池
notify()/notifyAll() // 喚醒等待線程
Java 使用管程實現同步。每個擁有 synchronized 方法的對象關聯一個管程:
wait() 釋放鎖並等待;其他線程進入管程執行。notify()/notifyAll() 喚醒等待線程競爭鎖。關鍵點:synchronized 方法/塊、wait/notify 必須成對使用、避免死鎖(固定獲取鎖順序)。
setPriority(int) / getPriority():1-10,高優先級優先調度。suspend()/resume(),改用協作式標誌位控制暫停/恢復。掌握線程本質與同步原理,是構建高併發、高可用 Java 系統的基石。