首页IT科技simpledateformat线程不安全的例子(避坑!SimpleDateFormat不光线程不安全,还有这个隐患)

simpledateformat线程不安全的例子(避坑!SimpleDateFormat不光线程不安全,还有这个隐患)

时间2025-09-19 07:08:40分类IT科技浏览6112
导读:众所周知,SimpleDateFormat是多线程不安全的 下面这段代码通过多线程使用同一个SimpleDateFormat对象的parse方法, 多次执行代码来测试,可以看到会出现两种预想不到的现象----->要么出现不正确的时间解析结果,要么抛出message各异的NumberFormatExceptio...

众所周知                 ,SimpleDateFormat是多线程不安全的

下面这段代码通过多线程使用同一个SimpleDateFormat对象的parse方法                         , 多次执行代码来测试        ,可以看到会出现两种预想不到的现象----->要么出现不正确的时间解析结果         ,要么抛出message各异的NumberFormatException异常                 。 @see>>借助SimpleDateFormat来谈谈java里的多线程不安全

SimpleDateFormat不光线程不安全                         ,还有这个隐患

如下代码运行结果是什么?

@Test public void test() throws ParseException { SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyyMMddHHmmss");//pattern System.out.println( simpleDateFormat.parse("2022-09-30 13:53:14")); }

答案:

Wed Dec 08 21:00:13 CST 2021

可见                ,字符串时间与指定的pattern不匹配         ,导致出现意外结果                         。

而我们这次在现网排查问题时                          ,正好是遇到了这个坑        。

数据库里的付款记录                ,竟然存在完成时间比创建时间还早的记录,并且还早了多半年         。

排查原因着实费了几番周折                         。原来                          ,在三方付款服务商通道对接程序里                         ,在解析付款完成时间时,由于程序员当时的粗心                 ,直接拷贝别的对接程序里的代码                         ,再加上测试没有覆盖到这个case        ,导致运行了一个月                 ,才发现这个问题                。

赶紧加上个必要的代码注释                         ,给“伸手党                 ”式的粗心同学提个醒         。

声明:本站所有文章        ,如无特殊说明或标注         ,均为本站原创发布                          。任何个人或组织                         ,在未征得本站同意时                ,禁止复制                 、盗用                         、采集        、发布本站内容到任何网站         、书籍等各类媒体平台                。如若本站内容侵犯了原著者的合法权益         ,可联系我们进行处理。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
用电脑一天赚30(电脑如何自动赚钱-限电限产背后,中国工厂为什么不赚钱?) 搜索引擎的工作原理(从抓取到排序,了解搜索引擎如何为我们提供准确的搜索结果)