static、final和ThreadLocal的使用说明

(一)static

1、static修饰的方法和属性会统一交给类管理,即多个类对象只会对应一个属性或方法,并由JVM分配在堆中的一块不变的区域。

2、static修饰的方法,可以使用"类名.方法名"的方式调用,避免了需要new对象的繁琐和内存资源的消耗。

 

总结

1、用来修饰类成员变量,从而实现所有对象对成员变量的共享。

2、用来修饰成员方法,可以直接“类名.方法名”的方式调用,常用于工具类。

3、静态块用法,将多个类成员统一初始化,即在实际被调用之前就被初始化了,且只需要初始化一次。

4、静态导包用法,将类的方法直接导入到当前类中,从而直接使用“方法名”进行调用,更加方便。

 

(二)final

1、修饰成员变量,说明该变量的值是不可变得。标注该变量只能进行一次赋值操作,且在运行过程中不可改变它的值。

2、修饰方法入参,说明整个方法中,参数的值是不可变的。

注意:当入参为对象时,是可以改变引用对象中成员变量的值。

3、修饰方法,说明该方法不能被覆盖,即不能被继承该类的子类重写。

4、修饰类,说明该类是无法被继承的。

 

(三)ThreadLocal

1、ThreadLocal为每个使用该变量的线程提供独立的变量副本,因此每一个线程都可以独立地改变自己的副本,而不会影响其他线程所对应的副本。

2、解决多线程并发访问同一变量造成脏数据的问题。

 

  • 提供的方法:
  • pub void set(Object value) 设置当前线程的线程局部变量的值
  • public Object get() 该方法返回当前线程所对应的线程局部变量的值
  • public void remove() 将当前线程局部变量的值删除,目的是为了内存的占用

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
public static final ThreadLocal listOfSuperPermissionObjectTreeResponse = new ThreadLocal; 这是一个具有公共、静态和最终修饰符的ThreadLocal变量。ThreadLocal是Java中用于在每个线程中保存变量副本的类。在这种情况下,listOfSuperPermissionObjectTreeResponse是一个ThreadLocal对象,用于在每个线程中维护一个特定类型的值。 ThreadLocal类的源码中有一个内部静态类Entry,它继承自WeakReference<ThreadLocal<?>>,其中包含了与ThreadLocal对象关联的值。每个ThreadLocal对象都会在Entry中维护一个value,用于存储与当前线程相关联的特定值。当ThreadLocal对象被垃圾回收时,Entry对象也会被回收。 在源码中的ThreadLocal.withInitial(HashMap::new)部分是使用Supplier接口的方法,用于在每个线程中初始化ThreadLocal对象时提供一个初始值。在这种情况下,使用HashMap的构造函数作为初始值供应商。 总之,public static final ThreadLocal listOfSuperPermissionObjectTreeResponse = new ThreadLocal;声明了一个ThreadLocal变量,用于在每个线程中保存一个特定类型的值,并使用HashMap::new作为初始值供应商。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [java8源码-ac_babel:一些后端学习笔记整理](https://download.csdn.net/download/weixin_38704485/19390839)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [JAVA并发编程--5 理解ThreadLocal](https://blog.csdn.net/l123lgx/article/details/127439245)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值