首页 > 解决方案 > 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 的后果、好处和缺陷是什么。我应该更喜欢哪一个以及为什么(内存、性能)?

标签: java

解决方案


ThreadLocal用于为不同的线程提供不同的实例。
由于DateTimeFormatter是线程安全的,版本 1 没有优势。
使用版本 2。


推荐阅读