关于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导致日期不对的问题 的相关文章

  • 运行具有外部依赖项的 Scala 脚本

    我在 Users joe scala lib 下有以下 jar commons codec 1 4 jar httpclient 4 1 1 jar httpcore 4 1 jar commons logging 1 1 1 jar ht
  • JavaFX 中具有自定义内容的 ListView

    How i can make custom ListView with JavaFx for my app I need HBox with image and 2 Labels for each line listView 您可以通过查看
  • 按第一列排序二维数组,然后按第二列排序

    int arrs 1 100 11 22 1 11 2 12 Arrays sort arrs a b gt a 0 b 0 上面的数组已排序为 1 100 1 11 2 12 11 22 我希望它们按以下方式排序a 0 b 0 首先 如果
  • 如何模拟从抽象类继承的受保护子类方法?

    如何使用 Mockito 或 PowerMock 模拟由子类实现但从抽象超类继承的受保护方法 换句话说 我想在模拟 doSomethingElse 的同时测试 doSomething 方法 抽象超类 public abstract clas
  • 在 S3 中迭代对象时出现“ConnectionPoolTimeoutException”

    我已经使用 aws java API 一段时间了 没有遇到太多问题 目前我使用的是库 1 5 2 版本 当我使用以下代码迭代文件夹内的对象时 AmazonS3 s3 new AmazonS3Client new PropertiesCred
  • hibernate锁等待超时超时;

    我正在使用 Hibernate 尝试模拟对数据库中同一行的 2 个并发更新 编辑 我将 em1 getTransaction commit 移至 em1 flush 之后我没有收到任何 StaleObjectException 两个事务已成
  • Java 8 流 - 合并共享相同 ID 的对象集合

    我有一系列发票 class Invoice int month BigDecimal amount 我想合并这些发票 这样我每个月都会收到一张发票 金额是本月发票金额的总和 例如 invoice 1 month 1 amount 1000
  • Java 中的“Lambdifying”scala 函数

    使用Java和Apache Spark 已用Scala重写 面对旧的API方法 org apache spark rdd JdbcRDD构造函数 其参数为 AbstractFunction1 abstract class AbstractF
  • 如何在selenium服务器上提供自定义功能?

    我知道可以通过某种方法获得一些硒功能 其中之一如下 driver getCapabilities getBrowserName 它返回浏览器名称的值 但如果它指的是一个可用的方法 如果我没有误解的话 这似乎与自定义功能有关 就像我的意思是
  • Javafx过滤表视图

    我正在尝试使用文本字段来过滤表视图 我想要一个文本字段 txtSearch 来搜索 nhs 号码 名字 姓氏 和 分类类别 我尝试过在线实施各种解决方案 但没有运气 我对这一切仍然很陌生 所以如果问得不好 我深表歉意 任何帮助将不胜感激 我
  • IntelliJ - 调试模式 - 在程序内存中搜索文本

    我正在与无证的第三方库合作 我知道有一定的String存储在库深处的某个字段中的某处 我可以预测的动态值 但我想从库的 API 中获取它 有没有一种方法可以通过以下方式进行搜索 类似于全文搜索 full程序内存处于调试模式并在某个断点处停止
  • 多模块项目的 Maven 阶段顺序?

    对不起 我是 Maven 的菜鸟 这是我的maven项目目录 project pom xml moduleA moduleB sub moduleA sub moduleB sub moduleC moduleC 当然 每个模块和子模块内都
  • Jersey 客户端请求中未设置 Content-Length-Header

    我正在使用 Jersey Client 访问网络服务 如下所示 response r accept MediaType TEXT PLAIN TYPE header content length 0 post String class 其中
  • 如何使用 Maven 和 wsimport 从 wsdl 生成类?

    当我尝试运行 mvngenerate sources 时 这是我的输出 SLF4J Failed to load class org slf4j impl StaticLoggerBinder SLF4J Defaulting to no
  • Java中的Object类是什么?

    什么是或什么类型private Object obj Object http download oracle com javase 6 docs api java lang Object html是Java继承层次结构中每个类的最终祖先 从
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • 如何使用 JSch 将多行命令输出存储到变量中

    所以 我有一段很好的代码 我很难理解 它允许我向我的服务器发送命令 并获得一行响应 该代码有效 但我想从服务器返回多行 主要类是 JSch jSch new JSch MyUserInfo ui new MyUserInfo String
  • hashcode 的默认实现为以相同方式构造的对象返回不同的值

    我在这里编写一个示例代码 public class Test private int i private int j public Test TODO Auto generated constructor stub public Test
  • ServletContainer 类未找到异常

    我无法再编译我的球衣项目 并且出现以下异常 GRAVE Servlet Project API threw load exception java lang ClassNotFoundException com sun jersey spi
  • 调整添加的绘制组件的大小和奇怪的摆动行为

    这个问题困扰了我好几天 我正在制作一个特殊的绘画程序 我制作了一个 JPanel 并添加了使用 Paint 方法绘制的自定义 jComponent 问题是 每当我调整窗口大小时 所有添加的组件都会 消失 或者只是不绘制 因此我最终会得到一个

随机推荐

  • 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导致日期不对的问题 目录 开场白 一 思路 二 如何解决 总结 开场白 项目在下班前的五分钟终于上线了 老王正在悠闲的喝茶 手中正握着即将送给女朋友小花的