项目多线程处理文件,将其改名为当前时间格式时候,偶尔会出现异常,但是一直不知道什么原因,偶然突然想到会不会是因为SimpleDateFormat是线程非安全原因导致的,经过测试果然如此,这里只说怎么解决,有兴趣的可以自己试一下
解决方法:
// 多线程时解决SimpleDateFormat线程不安全问题
private static ThreadLocal<SimpleDateFormat> threadLocal = new ThreadLocal<SimpleDateFormat>() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("yyyyMMddHHmmss");
}
};
public static Date parse(String dateStr) throws ParseException {
return threadLocal.get().parse(dateStr);
}