SimpleDateFormat不要定义为static

简介: SimpleDateFormat线程不安全,避免定义为static,若需静态使用应加锁或采用ThreadLocal。推荐JDK8新时间API:Instant、LocalDateTime、DateTimeFormatter,具有线程安全、简洁、不变性等优点。

SimpleDateFormat 是线程不安全的类,一般不要定义为 static 变量,如果定义为static,必须加锁,或者使用 DateUtils 工具类。
正例:注意线程安全,使用 DateUtils。亦推荐如下处理:
private static final ThreadLocal df = new ThreadLocal() {
@Override
protected DateFormat initialValue() {
return new SimpleDateFormat("yyyy-MM-dd");
}
};
说明:如果是 JDK8 的应用,可以使用 Instant 代替 Date,LocalDateTime 代替 Calendar,DateTimeFormatter 代替 SimpleDateFormat,官方给出的解释:simple beautiful strong immutable thread-safe。

相关文章
|
2月前
|
存储 NoSQL 关系型数据库
数据层
数据层依据应用数据模型,采用关系型数据库、NoSQL及分布式文件系统等多样化存储介质,实现高效、灵活的数据存储与管理。
|
Java API Spring
API管理工具Swagger介绍及Springfox原理分析
swagger是一个API框架,号称世界上最流行的API工具。它提供了API管理的全套解决方案,比如API在线编辑器,API UI展示界面,代码生成器等诸多功能。
11852 108
|
存储 算法 安全
【密码学】非对称加密算法 - ECDH
由于 ECC 密钥具有很短的长度,所以运算速度比较快。到目前为止,对于 ECC 进行逆操作还是很难的,数学上证明不可破解,ECC 算法的优势就是性能和安全性高。实际应用可以结合其他的公开密钥算法形成更快、更安全的公开密钥算法,比如结合 DH 密钥形成 ECDH 密钥协商算法,结合数字签名 DSA 算法组成 ECDSA 数字签名算法。ECDH算法常常用来进行密钥的协商,协商好密钥后,用来解决上面的密钥分配问题,将对称加密的密钥安全的传到对端设备。算法加密/解密数字签名密钥交换RSA✅✅✅❌。
5262 0
|
28天前
|
存储 Web App开发 编解码
Playwright截图与录屏功能深度教程
Playwright截图与录屏功能远超想象,本文分享实战中的隐藏技巧:从稳定截图、元素精确定位、全页滚动截长图,到多设备适配、视频录制优化及自动重试机制。结合懒加载处理、截图对比测试与错误兜底策略,助你构建高效、可靠的自动化视觉验证体系,真正提升测试质量与调试效率。
|
测试技术 API 微服务
性能测试并发量评估新思考
性能测试并发量评估新思考
640 20
性能测试并发量评估新思考
Error creating bean with name 'eurekaAutoServiceRegistration': Singleton bean creation not allowed while singletons
Error creating bean with name 'eurekaAutoServiceRegistration': Singleton bean creation not allowed while singletons
466 3
|
XML Java 测试技术
《手把手教你》系列基础篇(八十二)-java+ selenium自动化测试-框架设计基础-TestNG测试报告-上篇(详解教程)
【6月更文挑战第23天】TestNG 是一个用于自动化测试的 Java 框架,它自动生成测试报告,包括 HTML 和 XML 格式。报告可在 `test-output` 文件夹中找到。要创建测试用例,可创建一个实现了 `@Test` 注解的方法。通过 `testng.xml` 配置文件来组织和执行测试。默认报告包括测试结果、失败点和原因。用户还能实现 `ITestListener` 和 `IReporter` 接口来自定义报告和记录器。
263 2
|
Java 测试技术 Web App开发
《手把手教你》系列技巧篇(六十二)-java+ selenium自动化测试-RemoteWebDriver让你的代码与测试分离(远程测试)
【6月更文挑战第3天】本文介绍了在没有本地浏览器的情况下,如何使用RemoteWebDriver进行远程自动化测试。RemoteWebDriver分为客户端和服务端,客户端运行测试代码,服务端启动服务。服务端需要安装JDK、浏览器和对应的WebDriver,并启动selenium-server-standalone.jar。客户端通过URL连接到服务端,并指定预期的浏览器类型。这样,客户端的测试代码就能远程控制服务端的浏览器执行自动化测试。RemoteWebDriver的优点包括跨平台和浏览器测试、提高测试稳定性以及使测试环境和执行代码的机器分离。
1037 3
|
Java 应用服务中间件 微服务
Spring Boot可以同时处理多少请求?
Spring Boot的并发处理能力受硬件、JVM配置、嵌入式Tomcat的线程池(默认最大连接数8192,最大等待数100)、应用效率、系统架构和网络条件影响。开发阶段可能处理数百个并发,优化后在适合的硬件上可处理数千乃至上万并发。大型系统常结合负载均衡器。
850 2
|
XML 人工智能 测试技术
软件测试/人工智能|详解selenium xpath定位
软件测试/人工智能|详解selenium xpath定位