jdk源码01-ThreadLocal
ThreadLocal简介
在多线程访问同一个变量场景下,我们可以使用加锁(synchronized)以解决线程安全问题,而ThreadLocal为我们提供了一种全新的思路。与它绑定的thread各自维护一份共享变量,所以共享变量的线程安全问题得以解决。下面我们通过源码看看它是如何做到的以及它存在的问题。
ThreadLocal类
在idea上可以看到,ThreadLocal的类结构如下,我们一一介绍
- 内部类:
- SuppliedThreadLocal:为ThreadLocal初始化value值
- ThreadLocalMap:后面介绍
- 变量:
- HASH_INCREMENT:
- nextHashCode:原子性的一个整数值
- threadLocalHashCode:
- 方法:
- ThreadLocal():构造方法
- childValue():
- createInheritedMap():
- createMap():
- get():
- getMap():
- initialValue():
- nextHashCode():
- remove():
- set():
- setInitialValue():
- withInitial():
ThreadLocal重点介绍
待续。。。
ThreadLocalMap介绍
待续。。。
ThreadLocal中的内存泄露及解决方案
待续。。。