请教ThreadLocal
各位大哥,我是一个只知道埋头设计自己代码疏于学习别人技术的笨家伙,今天来到这里忽然觉得打开了另一个世界的大门,非常感谢。
有一个问题,我一直希望可以在class里象jsp里访问session一样可以访问一些变量而不用在调用时传入,这些变量可以是每个客户访问不同的。例如纪录operator,以便在不同的地方log时不必再一层一层把operatorId传进去。看了一下帖子里提到ThreadLocal,我想这个东西可能是我需要的。我查了java API doc,看到一个例子,不是十分肯定。而且有一点不懂:
public class SerialNum {
// The next serial number to be assigned
private static int nextSerialNum = 0;
private static ThreadLocal serialNum = new ThreadLocal() {
protected synchronized Object initialValue() {
return new Integer(nextSerialNum++);
}
};
public static int get() {
return ((Integer) (serialNum.get())).intValue();
}
}
中的:
new ThreadLocal() {
protected synchronized Object initialValue() {
return new Integer(nextSerialNum++);
}
};
是什么意思?定义一个新类吗,明明只有一个函数initialValue(),为什么下面又调用get方法。看起来更象是继承,initialValue()更象是覆盖,是这样吗?
有ThreadLocal可以让我参考吗?