java - ThreadLocal 和 Supplier 用于静态字段
问题描述
我有一堆静态实用程序字段,我想知道是否应该对所有这些字段使用 ThreadLocal。
版本 1(带有 ThreadLocal 供应商):
private static final ThreadLocal<DateTimeFormatter> TIME_FORMAT =
ThreadLocal.withInitial(() -> DateTimeFormatter.ofPattern("HH:mm:ss"));
版本 2(正常):
private static final DateTimeFormatter TIME_FORMAT_2
= DateTimeFormatter.ofPattern("HH:mm:ss");
使用版本 1 而不是版本 2 的后果、好处和缺陷是什么。我应该更喜欢哪一个以及为什么(内存、性能)?
解决方案
ThreadLocal
用于为不同的线程提供不同的实例。
由于DateTimeFormatter
是线程安全的,版本 1 没有优势。
使用版本 2。
推荐阅读
- .net - NLog如何设置LoggerName?
- javascript - 如何更改此灯箱#lightbox2 的默认图像大小?
- python - 如何在 pygame 中用我的旋转和移动汽车旋转我的碰撞箱?
- java - SpringBoot NoSuchMethodError
- c++ - while 和 for 循环没有。已知的迭代次数
- amazon-web-services - 在 AWS CloudFront 中查找视频传输的总数据
- javascript - Firebase JS 创建后如何检索用户 UID
- javascript - 如何在 Svelte / Sapper 的 __sapper__ 构建中包含我的服务器的文件
- php - 为什么此比较的输出为 TRUE
- python - Tkinter 回调 Traceback 中的异常(最近一次调用最后一次):OperationalError:输入不完整