ThreadLocal 如何带参数进行初始化

2019 年 12 月 24 日
 jzmws

SimpleDateFormat 非线程安全, 在阿里 Java 开发手册上推荐以下写法 ,可是这种写法参数是写固定的,而实际需要传入指定参数. 比如说只要显示年月日

private ThreadLocal dateFormat = new ThreadLocal() { @Override protected DateFormat initialValue() { return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); } };

问题: 如何在调用或者初始化时候传入自定义参数.

4297 次点击
所在节点    程序员
10 条回复
Kaiv2
2019 年 12 月 24 日
放到调用处啊
twirain
2019 年 12 月 24 日
新建个类
chendy
2019 年 12 月 24 日
format 是动态的,就不需要做这个 ThreadLocal 的优化了
或者做多个 ThreadLocal 保存各种要用到的 format
SoloCompany
2019 年 12 月 24 日
SimpleDateFormat 不是线程安全的这没错
问题是你为什么要重用他,不重用就不存在线程安全问题
jenschen
2019 年 12 月 24 日
ThreadLocal 是对每个线程复制一个值,来解决并发问题。直接用就可以了
lxk11153
2019 年 12 月 24 日
org.apache.commons.lang3.time.FastDateFormat
Raymon111111
2019 年 12 月 24 日
如果是专门想解决 SimpleDateFormat 的问题

那答案是不用这个类, 有很多更好用的替代类
lxk11153
2019 年 12 月 24 日
CStarter
2019 年 12 月 25 日
这个类用的时候直接 new,不要复用。
非要复用的话,自定义类继承 Threadlocal,定义自己的方法
hzgit
2019 年 12 月 25 日
ThreadLocal 初始化:静态方法 withInitial
SimpleDateFormat 非线程安全:LocalDateTime/LocalDate/LocalTime

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/631937

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX