数年ぶりとかいうレベルでJavaのスレッドに触ったもんだから色々忘れてたので、忘れてたことまとめておく。 ダブルチェックロッキングパターンって何でダメなんだっけ? Javaではダブルチェックロッキングパターンって場合によってはクリティカルにヤヴァい事があります。やばいってことは覚えてたんだけど、どういう理由で、どういう場面でやばいのか忘れてました。 private Object checkObj; public void dcheck(){ if( checkObj == null) synchronized{ if(checkObj==null){ Object o = new Object(); checkObj = o; } } ……… } 上のコードがクリティカルにヤヴァいパターンです。 ダブルチェックロッキングパターンってのは主に、マルチスレッド環境でシングルトンなオブジェクトを