public class SerialNum {
// The next serial number to be assigned
private static int nextSerialNum =1;
private static ThreadLocal serialNum = new ThreadLocal() {
protected synchronized Object initialValue() {
return new Integer(nextSerialNum++); }
};
public static int get() {
return ((Integer) (serialNum.get())).intValue(); } public static void main(String[] arg)
{
SerialNum testSerialNum = new SerialNum();
int iWhat=testSerialNum.get() ;
System.out.println(iWhat) ; }
}
/* 不明白说些什么?一个 ThreadLocal实例怎么还有 { }?
// The next serial number to be assigned
private static int nextSerialNum =1;
private static ThreadLocal serialNum = new ThreadLocal() {
protected synchronized Object initialValue() {
return new Integer(nextSerialNum++); }
};
public static int get() {
return ((Integer) (serialNum.get())).intValue(); } public static void main(String[] arg)
{
SerialNum testSerialNum = new SerialNum();
int iWhat=testSerialNum.get() ;
System.out.println(iWhat) ; }
}
/* 不明白说些什么?一个 ThreadLocal实例怎么还有 { }?
给你一个使用ThreadLocal的例子:class ThreadLocalDemo1
{
public static void main (String [] args)
{
MyThread mt1 = new MyThread ("A");
MyThread mt2 = new MyThread ("B");
MyThread mt3 = new MyThread ("C"); mt1.start ();
mt2.start ();
mt3.start ();
}
}class MyThread extends Thread
{
private static ThreadLocal tl =
new ThreadLocal ()
{
protected synchronized Object initialValue ()
{
return new Integer (sernum++);
}
}; private static int sernum = 100; MyThread (String name)
{
super (name);
} public void run ()
{
for (int i = 0; i < 10; i++)
System.out.println (getName () + " " + tl.get ());
}
}
e:\test>javac ThreadLocalDemo1.javae:\test>java ThreadLocalDemo1
A 100
A 100
A 100
A 100
A 100
A 100
A 100
B 101
C 102
B 101
C 102
B 101
C 102
B 101
C 102
B 101
C 102
B 101
C 102
B 101
B 101
B 101
B 101
C 102
C 102
C 102
C 102
A 100
A 100
A 100e:\test>