gpt4 book ai didi

java - 为什么 Java 的 SimpleDateFormat 类是非线程安全的?

转载 作者:搜寻专家 更新时间:2023-10-31 19:34:19 25 4
gpt4 key购买 nike

问题与 Java 的 SimpleDateFormat 类有关。我在文档中读到

Date formats are not synchronized. It is recommended to create separate format instances for each thread. If multiple threads access a format concurrently, it must be synchronized externally.

很明显,我被它以最隐蔽的方式击中后读到了。

有谁知道为什么有必要在类成员中获取状态信息,例如通过“格式”方法访问?

这是某种速度优化吗?我想不出正当理由。

最佳答案

你的答案几乎就在这里:

/* * (C) Copyright Taligent, Inc. 1996 - All Rights Reserved

在 1.4 hotspot 之前,用 Java 编写多线程代码主要是研究生的家庭作业。在 Web 应用程序服务器的真正到来和容器驱动的高度并发系统的兴起之前,这种语言已经出现了大约 10 年,我们大多数人(无论如何都不是 Android)将绝大部分时间都花在了这些系统上。

在 1996 年,垃圾收集是一个非常缓慢和痛苦的过程,通常会使你的 UI 在它发生时暂停并看起来被锁定,就像明智地创建新对象被认为是非常昂贵的(当你与 Windows 战斗时创建连续的内存空间) 95 共享 4MB 的物理内存,没有 L2 CPU 缓存需要一些时间.....)。

因此,在多线程极为罕见且内存非常宝贵的环境中(您的普通用户可能仍在使用 486 或 Pentium 1,系统内存为 8MB 甚至 4MB...)尽可能重复使用 Calendar 的单个实例是有意义的,Calendar 本身就是一个笨重的野兽。

今天我们可以 mock 这样一个有状态的类是多么可怕的做法,但也可以很容易地证明它是当时的正确选择。

捍卫 Sun 对 100% 向后兼容性的痴迷并且从不更新它是另一回事当然!

关于java - 为什么 Java 的 SimpleDateFormat 类是非线程安全的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12627568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com