码迷,mamicode.com
首页 > 其他好文 > 详细

ThreadLocal的学习

时间:2017-07-14 13:23:15      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:try   style   cal   val   垃圾   void   create   null   initial   

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的学习

标签:try   style   cal   val   垃圾   void   create   null   initial   

原文地址:http://www.cnblogs.com/pingqlin341/p/7169485.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!