import java.util.Random;
public class ThreadLocalTest {
private static ThreadLocal<Integer> x = new ThreadLocal<Integer>();
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i=0;i<3;i++){
new Thread(new Runnable(){
public void run(){
int data = new Random().nextInt();
x.set(data);
System.out.println("Thread name:" + Thread.currentThread().getName()+"has put data:" + data);
new A().get();
new B().get();
}
}).start();
}
}
static class A{
public void get(){
int data = x.get();
System.out.println("A :" + Thread.currentThread().getName()+"has put data:" + data);
}
}
static class B{
public void get(){
int data = x.get();
System.out.println("B :" + Thread.currentThread().getName()+"has put data:" + data);
}
}
}
使用JDK提供的ThreadLocal实现线程范围的共享变量(类似于Map<Thread,Variable>)。
一个ThreadLocal加一个泛型,泛型就是线程共享的那个变量!一个set(data)和一个get()就搞定了。