ThreadLocal的学习

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ThreadLocal的学习相关的知识,希望对你有一定的参考价值。

ThreadContext<T>为基于键/值对的当前线程提供了一种绑定和非绑定对象的方法。

这个类提供线程局部变量。这些变量与普通的变量不同,因为每个访问一个线程的线程(通过其get或set方法)都有自己的独立初始化变量的副本。

ThreadLocal实例通常是希望将状态与线程关联的类中的私有静态字段(例如:一个用户ID或事务ID)。每个线程都对线程本地变量的副本有一个隐式引用,

只要线程还活着,ThreadLocal实例就可以访问;在一个线程消失之后,所有线程本地实例的副本都将被垃圾收集(除非存在其他引用)。

<T>为线程中保存的对象。即一个类T是线程的一个类属性。

常用的方法有:

public class ThreadLocal<T> {

//设置属性

public void set(T value) {
Thread t = Thread.currentThread();
ThreadLocalMap map = getMap(t);
if (map != null)
map.set(this, value);
else
createMap(t, value);
}

//获取属性

public T get() {
Thread t = Thread.currentThread();
ThreadLocalMap map = getMap(t);
if (map != null) {
ThreadLocalMap.Entry e = map.getEntry(this);
if (e != null)
return (T)e.value;
}
return setInitialValue();
}

//获取线程的 ThreadLocal.ThreadLocalMap

ThreadLocalMap getMap(Thread t) {
return t.threadLocals;
}

}

 

 

 

以上是关于ThreadLocal的学习的主要内容,如果未能解决你的问题,请参考以下文章

ThreadLocal学习笔记

ThreadLocal学习笔记

ThreadLocal学习笔记

ThreadLocal学习笔记

ThreadLocal学习笔记

[Java并发包学习七]解密ThreadLocal