大厂技术面试题解析——Thread Local 是什么? 它的实现原理呢?

这个问题我从三个方面来回答。

1.   Thread Local 是一种线程隔离机制,它提供了多线程环境下对于共享变量访问的安全性。

2.   在多线程访问共享变量的场景中(出现下面第一个图),一般的解决办法是对共享 变量加锁(出现下面第二个图),从而保证在同一时刻只有一个线程能够对共享变 量进行更新,并且基于 Happens-Before 规则里面的监视器锁规则,又保证了数据修改后对其他线程的可见性。

3.   但是加锁会带来性能的下降 ,所以 Thread Local 用了一种空间换时间的设计思想, 也就是说在每个线程里面,都有一个容器来存储共享变量的副本,然后每个线程只  对自己的变量副本来做更新操作,这样既解决了线程安全问题,又避免了多线程竞争加锁的开销。

4.   Thread Local 的具体实现原理是 ,在 Thread 类里面有一个成员变量

Thread Local Map,它专门来存储当前线程的共享变量副本,后续这个线程对于共 享变量的操作 ,都是从这个 Thread Local Map 里面进行变更 ,不会影响全局共享变量的值。

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值