项目场景:
很多接口需要入参有时间,为了验证时间格式的正确性,在工具类中写了静态工具类验证,在入参时调用静态方法验证
问题描述
在单机测试接口接口完全没有问题,但是在并发的情况就会报接口异常
明显是验证方法存在并发问题。
原因分析:
SimpleDateFormat 不是线程安全的
查看源码
日期格式不同步。建议为每个线程创建单独的格式实例。如果多个线程同时访问一个格式,它必须是同步的。
查看parse 方法,底层还是使用 calendar,
SimpleDateFormat为static变量,那么它的Calendar变量也就是一个共享变量,可以被多个线程访问。
解决方案:
使用DateTimeFormatter 代替,线程安全。