关于SimpleDataFormat导致日期不对的问题

2023-10-31

点赞再看,养成习惯,大家好,我是辰兮!今天介绍怎么解决SimpleDataFormat导致日期不对的问题。


开场白

项目在下班前的五分钟终于上线了,老王正在悠闲的喝茶,手中正握着即将送给女朋友小花的发卡,随时准备冲出公司,咚咚咚,一条闪烁的消息弹了出来:“用户说他们设置的日期不对”,老王摸摸的把心爱的发卡放下,给小花发消息:“宝贝,今晚七夕节咱就不过了,线上出BUG了,你要保重!”

小花:“去你的,活该你要单身!!!”

一、思路

首先要知道为什么会出现这个问题

老王想了想,日期不对,那肯定是插入的时候出现了问题,排查下来是SimpleDataFormat的锅,最后发现是SimpleDataFormat的parse()方法,内部有一个Calendar对象,调用SimpleDataFormat的parse()方法会先调用Calendar.clear()方法,然后调用Calendar.add()方法,如果一个线程先调用了add()然后另一个线程又调用了clear(),这时候就会导致parse()方法解析的时间就不对了。
 

二、如何解决

从问题出发

既然一个线程会出现问题,那调用SimpleDataFormat的parse()方法的时候每个线程都new一个自己的 SimpleDataFormat就好啦

但1000个线程难道new1000个SimpleDataFormat?

明显不可能这样解决,那我们该怎样解决这个问题呢?

所以当时我们使用了线程池加上ThreadLocal包装SimpleDataFormat,再调用initialValue让每个线程有一个SimpleDataFormat的副本,从而解决了线程安全的问题,日期也不会出错,也提高了性能。


总结

SimpleDataFormat导致日期不对的问题可以用ThreadLocal包装SimpleDataFormat,从而解决线程安全的问题

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于SimpleDataFormat导致日期不对的问题 的相关文章

随机推荐

  • 23功能之海量文件(内存不足100M)的排序

    23功能之海量文件 内存不足100M 的排序 参考自 如何处理大数据量的磁盘文件 程序用编程艺术 1 思想 这里使用了多路归并 因为二路归并时 由于最后的两个文件变得越来越大 导致内存还是不满足 但多路归并时会因文件IO而变得慢 步骤 1
  • 【Linux开发】编写属于你的第一个Linux内核模块

    曾经多少次想要在内核游荡 曾经多少次茫然不知方向 你不要再对着它迷惘 让我们指引你走向前方 内核编程常常看起来像是黑魔法 而在亚瑟 C 克拉克的眼中 它八成就是了 Linux内核和它的用户空间是大不相同的 抛开漫不经心 你必须小心翼翼 因为
  • mac vim高亮及缩进设置

    转载自 http www 32133 com labrary 564 html 将vim的环境文件copy到自己常用用户的主目录下 cp usr share vim vimrc vimrc 修改 vimrc文件归读写属性 sudo chmo
  • 知乎:到底去大公司还是小公司?

    文章来源 dwz cn NA3E0JFG 职场生涯总会面临着选择 尤其对我们这些 IT 人来说 跳槽的频率应该是所有行业中相当大的了 那么我们跳来跳去 究竟该选择什么样的公司 大 or 小 工作三年多了 经历一大一小 最近也面试了不少家公司
  • 线程同步(一)

    上篇文章讲述了什么是线程 以及在Linux系统下线程的相关操作 线程 Linux系统实现 小梁今天敲代码了吗的博客 CSDN博客 本文将继续讲述线程的相关知识 线程同步 目录 1 线程同步的概念 2 线程不同步可能会发生什么 3 线程同步方
  • yolov8Pose实战

    目录 前言 一 yolov8环境搭建 二 测试 训练模型 评估模型 并导出模型 实测检测效果 测试人体姿态估计 前言 YOLO系列层出不穷 从yolov5到现在的yolov8仅仅不到一年的时间 追踪新技术 了解前沿算法 一起来测试下yolo
  • 全国大学生数学建模比赛介绍及其入门(国赛+美赛)

    1 数学建模介绍 1 1 数学建模概念 数学建模是将实际问题转化为数学问题 通过建立数学模型 编写程序求解的过程 如某区域水资源评价问题 水利工程项目风险评价问题 水资源污染增长预测问题 快递员派送快递的最短路径问题等等 1 2 数学模型的
  • Linux下压缩解压命令

    Linux下压缩解压命令 1 命令 zip 压缩 文件 zip 压缩文件名 需要压缩的文件 eg zip passwd zip passwd 目录 zip r 压缩文件名 需要压缩的目录 eg zip r test zip test 特点
  • 运行.exe,并自动关闭.exe

    运行exe文件 进行计算 并一次计算完毕后自动关闭exe界面 结束线程 可用于循环启动 exe param rnRuntime public static void test3 Runtime rnRuntime try 如果想自动关闭 r
  • How Do Vision Transformers Work? ICLR2022

    文章标题 How Do Vision Transformers Work 是 ICLR2022 spotlight 从大佬那里入的这篇文章的坑 遂做了个报告 大佬的视频来源 https www bilibili com video BV1G
  • 【论文复现】——Patchwork++:基于点云的快速稳健地面分割方法

    目录 一 算法原理 1 Git源码 2 论文概述 3 参考文献 二 代码实现 三 结果展示 四 相关链接 一 算法原理 本文使用PCL进行实现 1 Git源码 这是韩国团队2022年的最新文章 Patchwork Fast and Robu
  • Unity3d场景中出现闪面的解决方法

    当你发现在unity3d场景中 发现有闪面的现象 基本上是由于面之间的距离太近导致的 专业术语Z Fighting 出现这种情况可以调整摄像机的Clipping plane属性中的Near值来解决这个问题
  • 技能树-网络爬虫-BeautifulSoup

    文章目录 前言 一 获取所有p标签 二 获取所有text 三 获取所有图片地址 总结 前言 技能树 网络爬虫 BeautifulSoup Python入门技能树 大家好 我是空空star 本篇给大家分享一下 技能树 网络爬虫 Beautif
  • 数学实验-迭代(二)-分形(Mathematica实现)

    一 实验环境 Mathematica 10 3软件 二 实验目的 以迭代的观点介绍分形的基本特性以及生成分形图形的基本方法 使我们在欣赏美丽的分形图形的同时对分形几何这门学科有一个直观的了解 三 实验内容和步骤以及结果分析 实验2 1 Ko
  • 【DA 01】Domain-Adversarial Training of Neural Networks

    Abstract 本文提出一种适用于domain adaptation的representation learning方法 训练和测试数据来自相似但不同的分布 本文方法受启发于领域自适应的理论 为实现域迁移 预测必须要基于不可分辨的训练 s
  • Unix网络编程第三版源码编译

    环境 cat etc issue Ubuntu 12 04 1 LTS n l cat proc version Linux version 3 2 0 48 generic buildd komainu gcc version 4 6 3
  • 【containerd错误解决系列】uos arm主机 docker及containerd都拉不下来镜像

    操作 yum remove unpigz docker pull xxx crictl pull xxx 删除了这个包就可以了 具体说明参考下面的文档 参考 解决国产系统 Docker 拉取大镜像卡顿之谜
  • 虚函数、纯虚函数、多态

    一 虚函数 在基类的函数前加上virtual关键字 在派生类中重写该函数 运行时将会根据所指对象的实际类型来调用相应的函数 如果对象类型是派生类 就调用派生类的函数 如果对象类型是基类 就调用基类的函数 一 虚表和虚基表指针 虚函数表 Vi
  • CGAL 根据扫描线方向和角度对法向量进行重定向

    目录 一 算法原理 1 主要函数 二 代码实现 一 算法原理 最小生成树对法向量定向的结果在具有许多尖锐特征和遮挡的机载点云数据中结果并不理想 scanline orient normals 是专门用于具有扫描线特性的点云法向量重定向的替代
  • 关于SimpleDataFormat导致日期不对的问题

    点赞再看 养成习惯 大家好 我是辰兮 今天介绍怎么解决SimpleDataFormat导致日期不对的问题 目录 开场白 一 思路 二 如何解决 总结 开场白 项目在下班前的五分钟终于上线了 老王正在悠闲的喝茶 手中正握着即将送给女朋友小花的