ThreadLocal 原理

本文深入探讨了Java中的ThreadLocal原理,包括其线程本地变量特性,如何使用set()、get()、initialValue()和remove()方法。还讨论了ThreadLocalMap的Entry实体类及其在内存管理中的角色,以及如何防止内存泄露。此外,文章对比了ThreadLocal与synchronized在处理多线程并发访问时的不同策略:ThreadLocal提供线程间的数据隔离,而synchronized则实现数据共享。
摘要由CSDN通过智能技术生成

ThreadLocal 线程本地变量

ThreadLocal 线程本地变量,即每个线程可以有属于自己的变量副本,其他线程无法访问自己内部的副本变量(每个Thread线程内部都有一个ThreadLocalMap,key为使用弱引用的ThreadLocal实例,value为线程变量的副本ThreadLocal是一个弱引用。

1.ThreadLoca 是线程局部变量,在于每个访问该变量的线程,在线程内部都会初始化一个独立的变量副本,只有该线程可以访问【get() /set()】访问自己内部的副本变量,ThreadLocal实例通常声明为 private static。

2.线程在存活并且ThreadLocal实例可被访问时,每个线程隐含持有一个线程局部变量副本,当线程生命周期结束时,ThreadLocal的实例的副本跟着线程一起消失,被GC垃圾回收(除非存在对这些副本的其他引用)

ThreadLocal作用:确保在同一个线程下运作,调用的多个方法,他们可以共享同一份数据。

ThreadLocal的API

  • set(T value):将线程局部变量当前副本中的值设置为指定值

  • get():返回此线程局部变量当前副本中的值

  • initialValue():返回此线程局部变量当前副本中的初始值

  • remove():移除此线程局部变量当前副本中的值

ThreadLocal的set()

 ThreadLocal的get()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值