多线程—ThreadLocal

一、ThreadLocal的含义

线程的变量副本(就像命名一样),每个线程隔离。

二、ThreadLocal的结构

image

每个Thread都有自己的ThreadLocalMapThreadLocalMap的底层是使用数组;
其中每个Entry,它的key是ThreadLocal<?> k ,继承自WeakReference, 也就是我们常说的弱引用类型,可以简单地将它的key视作ThreadLocal,value为代码中放入的值(实际上key并不是ThreadLocal本身,而是它的一个弱引用)。
每个线程在往ThreadLocal里放值的时候,都会往自己的ThreadLocalMap里存,读也是以ThreadLocal作为引用,在自己的map里找对应的key,从而实现了线程隔离

posted @ 2021-12-01 16:11  光一  阅读(46)  评论(0编辑  收藏  举报