SimpleDateFormatは同期化されない。
// 悪い例 public class HogeBean { private Date date; private static final SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd"); public String getDateAsString() { return formatter.format(this.date); } } // 悪い例 public class Utils { private static final SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd"); public static String toString(Data date) { return formatter.format(date); } }
このようにSimpleDateFormatインスタンスをstatic変数に入れて再利用しようとすると複数スレッドから同時にアクセスされる可能性がある。避けるべし。特にWebアプリでは厳禁。
SimpleDateFormatをインスタンス変数にセットする場合も注意が必要。同期化するかスレッドセーフではない旨をJavaDocに明示すること。