Java提供了ThreadLocal(java.lang)类,实现线程内共享变量
-------------------------------------------------------------
Import java.util.Random;
public class TraditionalThreadSynchronized {
// private static Map threadData = new HashMap();
private static ThreadLocal threadData = new ThreadLocal();
public static void main(String[] args) {
for(int i=0;i<2;i++){
new Thread(new Runnable(){
public void run() {
int data = new Random().nextInt();
System.out.println(Thread.currentThread().getName()
+ " has put data :" + data);
// threadData.put(Thread.currentThread(), data);
threadData.set(data);
new A().get();
new B().get();
}
}).start();
}
}
static class A{
public void get(){
// int data = threadData.get(Thread.currentThread());
int data = threadData.get();
System.out.println("A from " + Thread.currentThread().getName()
+ " get data :" + data);
}
}
static class B{
public void get(){
// int data = threadData.get(Thread.currentThread());
int data = threadData.get();
System.out.println("B from " + Thread.currentThread().getName()
+ " get data :" + data);
}
}
}