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

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

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

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值