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