Java 与供应商就静态字段进行螺纹连接

Java 与供应商就静态字段进行螺纹连接,java,Java,我有一堆静态实用程序字段,我想知道是否应该对所有这些字段使用ThreadLocal 第1版(与当地供应商合作): 使用版本1而不是版本2的后果、好处和陷阱是什么。我应该选择哪一个以及为什么(内存、性能)?ThreadLocal用于为不同的线程提供不同的实例。 由于DateTimeFormatter是线程安全的,因此版本1没有任何优势。 使用版本2。ThreadLocal用于为不同的线程提供不同的实例。 由于DateTimeFormatter是线程安全的,因此版本1没有任何优势。 使用版本2。即使

我有一堆静态实用程序字段,我想知道是否应该对所有这些字段使用ThreadLocal

第1版(与当地供应商合作):


使用版本1而不是版本2的后果、好处和陷阱是什么。我应该选择哪一个以及为什么(内存、性能)?

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

使用版本2。

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

使用版本2。

即使是线程安全的,通常也会有优势,因为使用
ThreadLocal
可以模拟缓存,因此在线程中只创建一次实例,而不是每次调用


因此,我认为使用
ThreadLocal
时,内存、性能会更好。
DateTimeFormatter
仅是一个示例,用于说明
ThreadLocal
的一般用途,但它也可以是正则表达式(来自
模式.compile()
)或任何其他可能对缓存有用的内容。

即使是线程安全的,通常也有一个优势,因为使用
ThreadLocal
可以模拟缓存,因此在线程中只创建一次实例,而不是每次调用都创建一次实例

因此,我认为使用
ThreadLocal
时,内存、性能会更好。
DateTimeFormatter
仅是一个示例,用于说明
ThreadLocal
的一般用途,但它也可以是正则表达式(来自
Pattern.compile()
)或任何其他可能对缓存有用的内容

private static final ThreadLocal<DateTimeFormatter> TIME_FORMAT = 
ThreadLocal.withInitial(() -> DateTimeFormatter.ofPattern("HH:mm:ss"));
private static final DateTimeFormatter TIME_FORMAT_2
 = DateTimeFormatter.ofPattern("HH:mm:ss");