Java源码中ThreadLocal是如何实现的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计3555个文字,预计阅读时间需要15分钟。
ThreadLocal原理 + ThreadLocal源码研读 + set方法 + getMap + createMap + map.set + get方法 + map.getEntry(this) + remove + FastThreadLoc
- ThreadLocal原理
- ThreadLocal源码研读
- set方法
- getMap
- createMap
- map.set
- get方法
- map.getEntry(this)
- remove
- FastThreadLocal
ThreadLocal原理
我们都知道当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。
详细介绍一下ThreadLocal是如何实现为线程提供变量副本的,方便下面源码的理解:
首先我们要知道每个线程下都有一个私有变量map,当我们使用ThreadLocal进行set(val)变量时,会向当前线程下的map中put一个键为当前ThreadLocal对象(虚引用),值为val的键值对,这样当使用ThreadLocal的get方法时,会直接向当前线程下的map获得键为此ThreadLocal的值。
本文共计3555个文字,预计阅读时间需要15分钟。
ThreadLocal原理 + ThreadLocal源码研读 + set方法 + getMap + createMap + map.set + get方法 + map.getEntry(this) + remove + FastThreadLoc
- ThreadLocal原理
- ThreadLocal源码研读
- set方法
- getMap
- createMap
- map.set
- get方法
- map.getEntry(this)
- remove
- FastThreadLocal
ThreadLocal原理
我们都知道当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。
详细介绍一下ThreadLocal是如何实现为线程提供变量副本的,方便下面源码的理解:
首先我们要知道每个线程下都有一个私有变量map,当我们使用ThreadLocal进行set(val)变量时,会向当前线程下的map中put一个键为当前ThreadLocal对象(虚引用),值为val的键值对,这样当使用ThreadLocal的get方法时,会直接向当前线程下的map获得键为此ThreadLocal的值。

