SimpleDateFormat问题及解决方案

本文讨论了java.text.SimpleDateFormat在多线程环境下的线程安全问题,并提出了两种解决方案:每次使用前创建新对象或使用FastDateFormat。然而,FastDateFormat仅支持格式化而不支持解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    java.text.SimpleDateFormat是非线程安全的,所以,如果一个SimpleDateFormat对象作为类成员或者类的静态成员在多线程环境下被调用时,会出现“时间错乱”的现象。

替代方案:

1.每次使用SimpleDateFormat前都new一个新对象,这个做法的缺点是效率较低;

    2.使用apache的commons-lang包下的FastDateFormat,代码如下:

FastDateFormat fdfWithoutTime=FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss",TimeZone.getDefault(), Locale.getDefault());

String time=fdfWithoutTime.format(new Date());

(很不幸的是FastDateFormat只能进行format不能进行parse,据说有个叫JodaTime的库比较好用,木有用过)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值