gpt4 book ai didi

java - threadlocal 是否应该声明为最终字段

转载 作者:行者123 更新时间:2023-12-02 03:28:00 27 4
gpt4 key购买 nike

使用ThreadLocal类编程时,字段应该声明为final吗?如果编写类似 private ThreadLocal<String> threadLocal 的代码稍后在构造函数中初始化它,因为变量 threadLocal 引用不能再更改,我猜它等于 private final ThreadLocal<String> threadLocal;这个想法对吗?多线程类中下面的方法有什么区别?

 public class ThreadLocalTestForMultiThread{
private ThreadLocal<String> threadLocal;
public ThreadLocalTestForMultiThread(){
threadLocal = new ThreadLocal<String>();
}
}

public class ThreadLocalTestForMultiThread{
private final ThreadLocal<String> threadLocal;
public ThreadLocalTestForMultiThread(){
threadLocal = new ThreadLocal<String>();
}
}

最佳答案

最重要的是,您不必在 ThreadLocal 上具有 final,但您很可能不仅具有 final,而且还具有 静态就可以了。

当您处理 ThreadLocal 变量时,值得注意的关键属性是此类变量每个线程都有一个实例。此外,您还必须提供 initialValue() 方法的实现,以便该类知道如何在需要时构造新对象。

请注意,当您有一个普通的类级别变量时,隐含的是此类变量将根据实例拥有一个副本。在现实世界中,您不会有太多的应用程序需要每个实例都有一个 ThreadLocal ;并且很可能您将其置于 class 级别,即 static。通过这种方式,几乎可以肯定会在 static block 中或立即对其进行初始化。

关于java - threadlocal 是否应该声明为最终字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38517546/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com