DateFormat的线程安全问题
2011-12-19 17:55 康杜 阅读(386) 评论(0) 编辑 收藏 举报在下面例子中,System.out.println(data+ " : " + tempDateStr); 打印的结果是不一样的。
public class DateFormatIsNotThreadSafe {
static final SimpleDateFormat dateFormat =
new SimpleDateFormat("dd-MM-yyyy");
static String[] testData = {"01-10-1999", "14-10-2001", "31-10-2007"};
public static void main(String[] args){
for (final String data : testData){
new Thread(){
public void run(){
try {
Date date = dateFormat.parse(data);
String tempDateStr = dateFormat.format(date);
System.out.println(data+ " : " + tempDateStr);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}.start();
}
}
}
在运行的100个线程中,有些线程运行的结果是正确的,有些线程的运行结果是错误的
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步