Tud*_*scu 5 java api concurrency date thread-safety
问题涉及Java的SimpleDateFormat类.我在文档中读过
日期格式未同步.建议为每个线程创建单独的格式实例.如果多个线程同时访问格式,则必须在外部进行同步.
很显然,我读过之后被击中由它最模糊的方式.
是否有人知道为什么有必要在"格式"方法访问的类成员中拥有状态信息?
这是某种速度优化吗?我无法提出正确的理由.
你的答案几乎就在这里:
/**(C)版权所有Taligent,Inc.1996 - 保留所有权利
在1.4热点编写之前,Java中的多线程代码主要是研究生的家庭作业.在Web应用程序服务器的严重到来以及容器驱动的高度并发系统的兴起之前,这种语言已经存在了大约10年,我们大多数人(非机器人无论如何)都花费了我们绝大部分的时间.
在1996年,垃圾收集是一个非常缓慢和痛苦的过程,通常会使你的UI暂停并在发生时看起来被锁定,就像明智地创建新对象被认为是非常昂贵的(当你与Windows 95争夺时,创建连续的内存空间没有L2 CPU缓存的4MB物理内存共享需要一些时间.....).
因此,在多线程非常罕见且内存非常宝贵的环境中(普通用户可能仍然使用486或Pentium 1,8MB甚至4MB的系统内存......) - 尽可能使用日历的单个实例,日历本身就是一个笨重的野兽.
我们今天可以嘲笑这样一个类似于有状态的可怕实践,但它也可以很容易地被当作正确的选择.
捍卫Sun对100%向后兼容性的痴迷,永不更新它是另一回事!