您的位置:首页 > 其它

ThreadLocal 实现的线程安全SimpleDateFormat

2018-01-09 11:21 127 查看
public class SafeSimpleDateFormat
{
private final String _format;
private static final ThreadLocal<Map<String, SimpleDateFormat>> _dateFormats = new ThreadLocal<Map<String, SimpleDateFormat>>()
{
public Map<String, SimpleDateFormat> initialValue()
{
return new HashMap<String, SimpleDateFormat>();
}
};

private SimpleDateFormat getDateFormat(String format)
{
Map<String, SimpleDateFormat> formatters = _dateFormats.get();
SimpleDateFormat formatter = formatters.get(format);
if (formatter == null)
{
formatter = new SimpleDateFormat(format);
formatters.put(format, formatter);
}
return formatter;
}

public SafeSimpleDateFormat(String format)
{
_format = format;
}

public String format(Date date)
{
return getDateFormat(_format).format(date);
}

public String format(Object date)
{
return getDateFormat(_format).format(date);
}

public Date parse(String day) throws ParseException
{
return getDateFormat(_format).parse(day);
}

public void setTimeZone(TimeZone tz)
{
getDateFormat(_format).setTimeZone(tz);
}

public void setCalendar(Calendar cal)
{
getDateFormat(_format).setCalendar(cal);
}

public void setNumberFormat(NumberFormat format)
{
getDateFormat(_format).setNumberFormat(format);
}

public void setLenient(boolean lenient)
{
getDateFormat(_format).setLenient(lenient);
}

public void setDateFormatSymbols(DateFormatSymbols symbols)
{
getDateFormat(_format).setDateFormatSymbols(symbols);
}

public void set2DigitYearStart(Date date)
{
getDateFormat(_format).set2DigitYearStart(date);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息