SimpleDateFormat 线程安全使用ThreadLocal 或同步锁

1、使用ThreadLocal
public class DateUtil {
private static final String DATE_FORMAT = “yyyy-MM-dd HH:mm:ss”;

private   static final ThreadLocal<DateFormat> threadLocal = new ThreadLocal<DateFormat>() {
    @Override
    protected DateFormat initialValue() {
        return new SimpleDateFormat(DATE_FORMAT);
    }
};

public static DateFormat getDateFormat() {
    return (DateFormat) threadLocal.get();
}

public static Date parse(String textDate) throws ParseException {
    return getDateFormat().parse(textDate);
}

public static String format (Date textDate) throws ParseException {
    return getDateFormat().format(textDate);
}

}

2、同步锁
public class DateUtil {
//使用同步
private static SimpleDateFormat sdf2 = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
public static String formatDate2(Date date){

    synchronized(sdf2){

        return sdf2.format(date);

    }

}

public static Date parse2(String strDate) throws ParseException{

    synchronized(sdf2){

        return sdf2.parse(strDate);

    }

}

}

3、需要的时候创建新实例
public class DateUtil {
public static Date getformatDateFromString(String date ) throws ParseException {
SimpleDateFormat format = new SimpleDateFormat(DATE_FORMAT);

    Date parse = format.parse(date);
    return parse;
}
public static String getFromatDateFromDate(Date date){
    SimpleDateFormat format = new SimpleDateFormat(DATE_FORMAT);
    return format.format(date);
}

}

4threadlocal另一种用法:
public class DateUtilByThreadLocal {
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){

    return getDateFormat().format(date);

}



public static Date parse(String strDate) throws ParseException {

    return getDateFormat().parse(strDate);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值