SimpleDateFormat不是线程安全的
同时SimpleDateFormat初始化比较耗资源
解决方式为每一个线程的每一个日期pattern维护一个SimpleDateFormat对象
使用ThreadLocal
private static ThreadLocal<Map<String,SimpleDateFormat>> threadLocal = new ThreadLocal<Map<String,SimpleDateFormat>>(); public static SimpleDateFormat getDateFormatObj(final String pattern){ Map<String,SimpleDateFormat> dfMap = threadLocal.get(); if (dfMap == null) { dfMap = new HashMap<String, SimpleDateFormat>(); threadLocal.set(dfMap); } SimpleDateFormat currentFormat=dfMap.get(pattern); if(currentFormat==null) { currentFormat=new SimpleDateFormat(pattern); dfMap.put(pattern,currentFormat); } return currentFormat; }