开发者社区> 问答> 正文

[@徐雷frank][¥20]ThreadLocal 这个为啥理解起来迷迷糊糊得?

(1)new ThreadLocal 对象;

(2)ThreadLocal里面有个ThreadLocalMap 的内部类,存放;

(3)每个Thread 有一个ThreadLocalMap成员变量;

(4)threadlocal.set(T):相当于为每一个线程创建了一个Object得副本变量;

threadlocal.get():获取当前thread内部ThreadLocal对象对应得value;

是这样理解的吗? 这样得话每个线程操作副本时候不会相互影响是吧,还有呢? 还解决了什么问题?

展开
收起
晓生寒 2018-12-14 20:49:26 2007 0
1 条回答
写回答
取消 提交回答
  • 1.阿里云大学讲师,主讲《微服务Spring Cloud设计与开发实战》《MongoDB高级实战》等课程 2.MongoDB中文社区专家 3.《MongoDB实战》第2版译者 5.吉林大学计算机科学学士、上海交通大学硕士

    1、Java ThreadLocal是和单个线程相关的变量,没有线程安全问题,自带自用,好比每个人出去旅游自带水壶一样,不会互相争用,。
    2、每个线程都有自己的ThreadLocal变量,
    3、线程可以使用它的get()和set()方法来获取默认值或将其值更改为Thread的本地值。
    4、ThreadLocal实例通常是希望将状态与线程相关联的类中的私有静态字段。


    阿里巴巴云栖社区Java专场12月22日周六下午 杭州,https://yq.aliyun.com/activity/796不少同学 高铁 飞机来杭州参加大会

    2019-07-17 23:21:33
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载