码迷,mamicode.com
首页 > 编程语言 > 详细

DateFormat的多线程不安全

时间:2016-01-04 15:47:09      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:dateformat   java   多线程   异常   

最近一个程序中,多线程调用sdf.format(date) ,经常获得的时间错误,刚开始以为是自己程序逻辑有问题 后来经过查阅资料,发现dateFormat不是线程安全的,因此 加上线程安全synchronized 后运行,正常

Java代码  

技术分享

  1. /** 

  2.  * @author onedear 

  3.  * 

  4.  */  

  5. public final class DateUtil {  

  6.       

  7.     private static DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  

  8.       

  9.     public static  String dateToString(Date date) {  

  10.         return sdf.format(date);  

  11.     }  

  12.   

  13.     /** 

  14.      * 返回天key 

  15.      * @return  

  16.      */  

  17.     public static Date getDayTime(Date date) {  

  18.         Calendar cal = new GregorianCalendar();  

  19.         cal.setTime(date);  

  20.         cal.set(Calendar.MINUTE, 0);  

  21.         cal.set(Calendar.HOUR_OF_DAY, 0);  

  22.         cal.set(Calendar.SECOND, 0);  

  23.         cal.set(Calendar.MILLISECOND, 0);  

  24.         return cal.getTime();  

  25.     }   

  26.       

  27. }  


那异常数据肯定是被其他线程修改了,最后改成

Java代码  

技术分享

  1. public static synchronized String dateToString(Date date) {  

  2.         return sdf.format(date);  

  3. }  

 系统正常跑动。

本文出自 “7134544” 博客,请务必保留此出处http://7144544.blog.51cto.com/7134544/1731289

DateFormat的多线程不安全

标签:dateformat   java   多线程   异常   

原文地址:http://7144544.blog.51cto.com/7134544/1731289

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!