simpledatefomat报multiple points

文章讨论了在Java中使用SimpleDateFormat进行日期格式化时遇到的并发错误,推荐使用ThreadLocal来隔离实例,以避免资源消耗和线程安全问题。提供了两种使用ThreadLocal初始化SimpleDateFormat的方法,以确保每个线程拥有独立的实例。
摘要由CSDN通过智能技术生成

欢迎使用Markdown编辑器

发现一个偶现的问题,后台报错显示simpleDateFormat的parse报错了。
明明传入的日期格式是正确的,为什么会报错。。。
后来搜索到问题,参考博客:
https://blog.csdn.net/EDG_win/article/details/106022657

处理办法

  1. 不将simpleDateFormat放在工具类或者提取为公共变量,每次使用前new一个即可。(相对消耗资源)
  2. 加入锁机制(并发能力下降)
  3. 使用ThreadLocal(推荐,每个线程只会创建一个simpleDateFormat)

使用ThreadLocal隔离创建simpleDateFormat

方法一:

private static final ThreadLocal<DateFormat> sdf = new ThreadLocal<DateFormat>(){
    @override
    protected  DateFormat initialValue() {
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    }
}

方法二:

private static final ThreadLocal<DateFormat> sdf = ThreadLocal.withInitial(() -> new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值