ThreadLocal

ThreadLocal

定义

ThreadLocal是一个本地线程副本变量工具类。主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互不干扰,在高并发场景下,可以实现无状态的调用,特别适用于各个线程依赖不同的变量值完成操作的场景

详细实现(源码)

可以理解为每个线程内部都有一个Map,存了线程某些实列的副本,在该线程内部可以无状态获得实列

由于每个线程只能拿到自己的变量副本,所以用ThreadLocal对Map做了封装,由ThreadLocal负责向map获取和设置线程的变量值,保证数据的隔离性

img
以上图片来自网络

ThreadLocalMap

ThreadLocalMap是ThreadLocal的内部类,没有实现Map接口,用独立的方式实现了Map的功能,其内部的Entry也独立实现

img
以上图片来自网络

ThreadLocalMap中,也是用Entry来保存K-V结构数据的。但是Entry中key只能是ThreadLocal对象,这点被Entry的构造方法已经限定死了

// 内部类ThreadLocalMap的基本结构
static class ThreadLocalMap {
   
    static class Entry extends WeakReference<ThreadLocal<?>> {
   
        /** The value associated with this ThreadLocal. */
        Object value;

        Entry(ThreadLocal<?> k
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值