ThreadLocal 是什么?它的实现原理是什么?

2024-01-01 19:09:03

ThreadLocal 是什么?它的实现原理是什么?

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

在多线程访问共享变量的场景中,一般的解决办法是对共享变量加锁,从而保证在同一时刻只有一个线程能够对共享变量进行更新,并且基于 Happens-Before 规则里面的监视器锁规则,又保证了数据修改后对其他线程的可见性。
在这里插入图片描述
但是加锁会带来性能的下降,所以 ThreadLocal 用了一种空间换时间的设计思想, 也就是说在每个线程里面,都有一个容器来存储共享变量的副本,然后每个线程 只对自己的变量副本来做更新操作,这样既解决了线程安全问题,又避免了多线程竞争加锁的开销。
在这里插入图片描述
ThreadLocal 的具 体实 现原 理是, 在 Thread 类里 面有 一个 成员变量ThreadLocalMap,它专门来存储当前线程的共享变量副本,后续这个线程对于共享变量的操作,都是从这个 ThreadLocalMap 里面进行变更,不会影响全局共享变量的值。

文章来源:https://blog.csdn.net/weixin_44797327/article/details/135327014
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。