ThreadLocal理解四:工作过程

背景
  1. 推荐阅读ThreadLocal 理解一:基础知识及其应用
  2. 推荐阅读ThreadLocal理解二:内存泄漏过程分析及其解决方案
  3. 推荐阅读ThreadLocal理解三:在线程池中使用存在的问题及其解决方案
  4. Thread和ThreadLocalMap关系是什么?
  5. ThreadLocal及其ThreadLocalMap相互之间的关系?
  6. ThreadLocalMap与Entry相互之间的关系?
  7. 在哪个环节上构建的关系?比如Thread中的ThreadLocalMap?
过程
  1. 类图关系
    在这里插入图片描述

  2. 运行时数据布局
    在这里插入图片描述

  3. ThreadLocal结构设计布局
    在这里插入图片描述
    理解每个线程都私有ThreadLocalMap实例。

  4. 开发者自定义的ThreadLocal静态属性的意义?

    a) 给当前线程的threadLocals赋值,也就是帮忙辅助生成ThreadLocalMap实例。

    b)Entry中的k就是我们开发者自定义的ThreadLocal实例变量。是弱引用。

小结
  1. 记录与ThreadLocal相关的类图关系。

  2. ThreadLocal运行时内存结构布局。

  3. ThreadLocal内部的结构设计布局。

  4. 工作过程
    a) 开发者自定义的ThreadLocal实例调用set()方法

    直接获取当前线程,然后直接获取当前线程的ThreadLocalMap实例。如果为空,则创建ThreadLocalMap实例并赋值给当前线程,并把值(T v)放入到map中的entry[]中;如果不为空,则直接set值即可。

    b)开发者自定义ThreadLocal实例调用get()方法

    直接获取当前线程,然后直接获取当前线程的ThreadLocalMap实例。如果为空,则设置初始值,这个设置初始值的逻辑是,先执行自己默认初始值设定,默认值是null,然后获取当前线程,然后获取当前线程的ThreadLocalMap实例,如果为空,则创建ThreadLocalMap实例并赋值给当前线程,并把值(T v)放入到map中的entry[]中;如果不为空,则直接获取值。

  5. 理解ThreadLocal相关类图关系,以及ThreadLocal内部结构设计布局和ThreadLocal在运行时数据的内存布局。而我们的工作过程,只是在这些基础上去构建相互之间的关系,也就是我们设计好基础组件,利用工作过程(工作原理)或者我们叫做所谓的算法,去组织和协调这些基础组件,让它们有序地完成自己相应的职能。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值