請教ThreadLocal

sprsong發表於2003-07-12
各位大哥,我是一個只知道埋頭設計自己程式碼疏於學習別人技術的笨傢伙,今天來到這裡忽然覺得開啟了另一個世界的大門,非常感謝。
有一個問題,我一直希望可以在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可以讓我參考嗎?

相關文章