深入理解ThreadLocal

目录

​​​​​​

ThreadLocal是什么

ThreadLocal的应用场景

ThreadLocal的内部原理

ThreadLocal内存泄露问题

父子线程如何共享数据

 

 

ThreadLocal是什么

java.lang.ThreadLocal是JDK中提供的一个类,在并发编程中,为解决线程安全问题提供了一种用空间换时间的新思路。

 

在一些高并发的场景中,如果需要对公共资源进行操作,我们第一时间就会想到使用synchronized或Lock,给访问公共资源的代码上锁,来保证了代码的原子性。但是多个线程同时竞争同一把锁的时候,可能会造成大量的锁等待,可能会浪费很多时间,让系统的响应时间变慢。这个时候我们就可以考虑是否可以使用ThreadLocal。

 

将类变量放到ThreadLocal类型的对象中,就可以使变量在每个线程中都有独立拷贝,不会出现一个线程读取变量时而被另一个线程修改的现象。

ThreadLocal的应用场景

1、全局存储用户信息

      当用户登陆后,会将用户信息存入token中并返回给前端,当用户调用需要授权的接口时,前端会把token放到header中去请求后端接口,后端在拦截器中解析token,获取用户信息,然后存放到某个工具类的ThreadLocal变量中,后续执行代码过程中,就不需要关注如何获取用户信息,只需要使用工具类get方法就可以获取。

 

2、SimpleDateFormat与ThreadLocal结合使用

      大家都知道SimpleDateFormat是不安全类,但是做一些日期处理的时候又经常会用到这个类,这个时候我们可以与Thread

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值