ThreadLocal
什么是ThreadLocal
ThreadLocal提供了线程内部的局部变量,每个线程都可以通过get()
和set()
来对这个局部变量进行操作,但不会和其他线程的局部变量进行冲突,保证了多线程环境下数据的独立性,实现了线程的数据隔离~。
以下是ThreadLocal常用的API
threadLocal.get()
方法,取当前线程存放在ThreadLocal
里的数据threadLocal.set(T value)
方法,设置当前线程在ThreadLocal
里的数据threadLocal.remove()
方法,移除当前线程在ThreadLocal
里的数据threadLocal.initialValue()
,返回当前线程在ThreadLocal
里的初始值
ThreadLocal的原理
每个Thread
维护一个ThreadLocalMap
哈希表,这个哈希表的key
是ThreadLocal
实例本身,value
才是真正要存储的值Object
。