SimpleDateFormat并不是线程安全。在高并发情况下,使用静态的SimpleDateFormat是不可取的。 要在高并发环境下能有比较好的体验,可以使用ThreadLocal来限制SimpleDateFormat只能在线程内共享,这样就避免了多线程导致的线程安全问题。 private static ThreadLocal<DateFormat> threadLocal = new ThreadLocal<DateFormat>() { @Override protected DateFormat initialValue() { return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); } }; public static String format(Date date) { return threadLocal.get().format(date); }
参考自:Java8新增的DateTimeFormatter与SimpleDateFormat的区别 |