ThreadLocalMap为什么要定义在ThreadLocal中,而不直接定义在Thread中?

刚看了一下ThreadLocal的源码,刚开始一直看不懂为什么ThreadLocalMap中要定义一个Entry。
最初的理解是只需要在ThreadLocalMap中定义一个Object类型的成员变量就可以了,直到看到网上看到有博主在手机上画的一幅草图才明白:


一个ThreadLocal对应一个线程,但是可没人说一个线程也只能有一个ThreadLocal。

发现ThreadLocalMap的作用是存放多个ThreadLocal和其对应的需要存储的值(this, value)。

问题是:

既然ThreadLocalMap 是每个线程一个,那么为什么不直接定义到Thread类中呢?反而要定义在ThreadLocal,然后还得交叉引用,这样并可读性非常糟糕,理解起来也不容易,那么设计者的考虑是什么呢?请大神指导!!

查看全部
qq_35770909
单v纯微笑
2019/01/16 16:08
  • java
  • 点赞
  • 收藏
  • 回答
    私信
满意答案
查看全部

2个回复