SimpleDateFormat和DateFormat类不是线程安全的。

比较好的两种方法

import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;public class ConcurrentDateUtil {    private static ThreadLocal<DateFormat> threadLocal = new ThreadLocal<DateFormat>() {
        @Override        protected DateFormat initialValue() {            return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        }
    };    public static Date parse(String dateStr) throws ParseException {        return threadLocal.get().parse(dateStr);
    }    public static String format(Date date) {        return threadLocal.get().format(date);
    }
}
import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;public class ThreadLocalDateUtil {    private static final String date_format = "yyyy-MM-dd HH:mm:ss";    private static ThreadLocal<DateFormat> threadLocal = new ThreadLocal<DateFormat>(); 
 
    public static DateFormat getDateFormat()   
    {  
        DateFormat df = threadLocal.get();  
        if(df==null){  
            df = new SimpleDateFormat(date_format);  
            threadLocal.set(df);  
        }  
        return df;  
    }  

    public static String formatDate(Date date) throws ParseException {        return getDateFormat().format(date);
    }    public static Date parse(String strDate) throws ParseException {        return getDateFormat().parse(strDate);
    }   
}


你可能感兴趣的:(SimpleDateFormat和DateFormat类不是线程安全的。)