该类提供了线程局部 (thread-local) 变量。这些变量不同于它们的普通对应物,因为访问某个变量(通过其 get 或 set 方法)的每个线程都有自己的局部变量,它独立于变量的初始化副本。ThreadLocal 实例通常是类中的 private static 字段,它们希望将状态与某一个线程(例如,用户 ID 或事务 ID)相关联。
这个是什么,就是解决一个线程内共享一个变量,这个变量只在这个线程内部有效,在一个线程内访问的都一个同一个对象,而多个线程之间的这个对象却是相互独立的。说来就是每一个线程都有一个独立的此线程副本。
使用ThreadLocal一般都声明为静态的变量
在我们的线程中有一个threadLocals的Hash表来存放这个对象,我们用ThreadLocal对象作为主键,因此我们的ThreadLocal对象声明为静态的
我们可以使用多个TheadLocal,来使一个线程里有多个共享的变量
这个就是要实现一个线程里面共享一个变量
public void set(Object value) {
Thread t = Thread.currentThread();
ThreadLocalMap map = getMap(t);
if (map != null)
map.set(this, value);
else
createMap(t, value);
}
ThreadLocalMap getMap(Thread t) {
return t.threadLocals;
}
posted on 2009-05-14 21:03
小晖 阅读(194)
评论(0) 编辑 收藏