並行性の異常である
Livelock と
Starvation を解説します。彼らが
Deadlock とどう違い、コードやログでどう見えるか。Java による例を紹介します: 「礼儀正しい作業者」(ライブロック)と、優先度や不公平なロックによる飢餓。問題の検出(ログ記録、
Thread dump、
VisualVM、
Java Mission Control)と予防: 再試行前のランダムな待機(
Thread.sleep)、ノンブロッキングアルゴリズム、
ReentrantLock の公平性フラグ(
new
ReentrantLock(true))による公平なロック、丁寧に絞ったクリティカルセクション、そして
setPriority() や
synchronized の乱用を避けること。