SimpleDateFormat线程不安全 【坑】

来源:互联网 发布:nba2k14卢比奥面部数据 编辑:程序博客网 时间:2024/06/06 03:57

SimpleDateFormat

public static final String DATE_PARTEN = "yyyy-MM-dd HH:mm:ss";public static final String DAY_PARTEN = "yyyy-MM-dd";/** * 线程安全转换 String -> Date */public static Date safeParseDate(String dateStr) throws ParseException {    return getDateFormat().parse(dateStr);}/** * 线程安全格式化 Date -> String */public static String safeFormatDate(Date date) {    return getDateFormat().format(date);}/** * 线程安全转换 String -> Date */public static Date safeParseDay(String dateStr) throws ParseException {    return getDayFormat().parse(dateStr);}/** * 线程安全格式化 Date -> String */public static String safeFormatDay(Date date) {    return getDayFormat().format(date);}/** * 借助ThreadLocal完成对每个线程第一次调用时初始化SimpleDateFormat对象 */private static ThreadLocal<SimpleDateFormat> threadDateLocal = new ThreadLocal<SimpleDateFormat>() {    protected synchronized SimpleDateFormat initialValue() {        return new SimpleDateFormat(DATE_PARTEN);    }};/** * 获取当前线程中的安全SimpleDateFormat对象 */private static DateFormat getDateFormat() {    return (DateFormat) threadDateLocal.get();}/** * 借助ThreadLocal完成对每个线程第一次调用时初始化SimpleDateFormat对象 */private static ThreadLocal<SimpleDateFormat> threadDayLocal = new ThreadLocal<SimpleDateFormat>() {    protected synchronized SimpleDateFormat initialValue() {        return new SimpleDateFormat(DAY_PARTEN);    }};/** * 获取当前线程中的安全SimpleDateFormat对象 */private static DateFormat getDayFormat() {    return (DateFormat) threadDayLocal.get();}