解析並行異常
Livelock 與
Starvation:它們與
Deadlock 有何不同、在程式碼與日誌中如何呈現。展示 Java 範例:『有禮貌的工人』(活鎖)以及由優先權與不公平鎖導致的飢餓。學習如何偵測問題(日誌、
Thread dump、
VisualVM、
Java Mission Control)並防範:在重試前加入隨機延遲(
Thread.sleep)、採用非阻塞演算法、透過帶有 fairness 旗標的
ReentrantLock(
new
ReentrantLock(true))取得公平鎖、謹慎設計臨界區,並避免濫用
setPriority() 與
synchronized。