标签:dateformat java 多线程 异常
最近一个程序中,多线程调用sdf.format(date) ,经常获得的时间错误,刚开始以为是自己程序逻辑有问题 后来经过查阅资料,发现dateFormat不是线程安全的,因此 加上线程安全synchronized 后运行,正常
Java代码
/**
* @author onedear
*
*/
public final class DateUtil {
private static DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static String dateToString(Date date) {
return sdf.format(date);
}
/**
* 返回天key
* @return
*/
public static Date getDayTime(Date date) {
Calendar cal = new GregorianCalendar();
cal.setTime(date);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
return cal.getTime();
}
}
那异常数据肯定是被其他线程修改了,最后改成
Java代码
public static synchronized String dateToString(Date date) {
return sdf.format(date);
}
系统正常跑动。
本文出自 “7134544” 博客,请务必保留此出处http://7144544.blog.51cto.com/7134544/1731289
标签:dateformat java 多线程 异常
原文地址:http://7144544.blog.51cto.com/7134544/1731289