simpledatefomat报multiple points

simpledatefomat报multiple points

  • 欢迎使用Markdown编辑器
    • 处理办法
    • 使用ThreadLocal隔离创建simpleDateFormat

欢迎使用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"));

你可能感兴趣的:(java基础,java,开发语言)