ThreadLocal

Threadlocal

Threadlocal 是jdk提供的一个除了加锁外的另外一种线程并发安全的东西。

Threadlocal 和 Synchonized的比较

这两者都是解决线程并发安全的问题。

  • Synchonized是通过上锁的方式,使某个变量或者某个方法,在某一个时刻只能被一个线程访问到。
  • Threadlocal 是通过为每个线程都提供了变量的副本,使每个线程在某一个时刻访问到的,并非同一个对象。
源码

在这里插入图片描述
基本上常用到的估计也就这4个方法。看看这玩意里面到底怎么玩的。
在这里插入图片描述
在这里插入图片描述
get,set方法操作的 都是取到了 ThreadLocalMap。那么ThreadLocalMap是个啥东西?
在这里插入图片描述
其实这个玩意在Thread是一个属性在这里插入图片描述
这个类定义在ThreadLocal里面的一个静态内部类。
在这里插入图片描述
真正存储数据的是ThreadLocalMap里面的Entry。 Entry里的value值就是我们操作时所存储的值。
在这里插入图片描述
在这里插入图片描述
所存的值都在这entry数组里。

说白了,就是当某个线程get 或者 set的时候,取到的都是当前线程的ThreadLocalMap,其实就是拿到 每个线程独有的 ThreadLocalMap。然后再用 ThreadLocal 的当前实例,拿到 Map 中的相应的 Entry,然后就可以拿到相应的值返回出去。当然,如果 Map 为空,还会先进行 map 的创建,初始化等工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值