次のクラスはスレッドセーフではありません ( Proving the following code not thread safeで証明されているように)
コンパイル時/実行時の分析のいずれかに役立ち、以下がスレッドセーフではないことを教えてくれるフレームワークはありますか?
コンパイル時に理想的には、Eclipse で波状の下線が表示され、クラスがスレッドセーフではないことがわかりますか?
実行時に、静的コード分析でクラスが非スレッドセーフとして検出されますか?
public class LazyInitRace {
private ExpensiveObject instance = null;
public ExpensiveObject getInstance() {
if (instance == null)
instance = new ExpensiveObject();
return instance;
}
}