jdk源码01-ThreadLocal

ThreadLocal简介

在多线程访问同一个变量场景下,我们可以使用加锁(synchronized)以解决线程安全问题,而ThreadLocal为我们提供了一种全新的思路。与它绑定的thread各自维护一份共享变量,所以共享变量的线程安全问题得以解决。下面我们通过源码看看它是如何做到的以及它存在的问题。

ThreadLocal类

在idea上可以看到,ThreadLocal的类结构如下,我们一一介绍

jdk源码01-ThreadLocal

  • 内部类:
    • SuppliedThreadLocal:为ThreadLocal初始化value值
    • ThreadLocalMap:后面介绍
  • 变量:
    • HASH_INCREMENT:
    • nextHashCode:原子性的一个整数值
    • threadLocalHashCode:
  • 方法:
    • ThreadLocal():构造方法
    • childValue():
    • createInheritedMap():
    • createMap():
    • get():
    • getMap():
    • initialValue():
    • nextHashCode():
    • remove():
    • set():
    • setInitialValue():
    • withInitial():

ThreadLocal重点介绍

待续。。。

ThreadLocalMap介绍

待续。。。

ThreadLocal中的内存泄露及解决方案

待续。。。