每个线程单独一份数据ThreadLocal
import java.util.Random;
public class D {
// public static ThreadLocal<Integer> map=new ThreadLocal<Integer>();
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()+":"+data);
// map.set(data);
//
ThreadData.getThreadInstance().setAge(data);
ThreadData.getThreadInstance().setName(data);
new DD().a();
new DD().b();
}
}
).start();
}
}
static class DD{
public void a() {
// Integer a = map.get();
ThreadData instance = ThreadData.getThreadInstance();
System.out.println(Thread.currentThread().getName()+
"--A--name:"+instance.getName()+
"--age:"+instance.getAge());
}
public void b() {
// Integer b = map.get();
ThreadData instance = ThreadData.getThreadInstance();
System.out.println(Thread.currentThread().getName()+
"--B--name:"+instance.getName()+
"--age:"+instance.getAge());
}
}
}
class ThreadData{
public static ThreadLocal<ThreadData> threadMap=new ThreadLocal<ThreadData>();
private ThreadData() {}
public static ThreadData getThreadInstance() {
ThreadData threadData = threadMap.get();
if(threadData==null) {
threadData=new ThreadData();
threadMap.set(threadData);
}
return threadData;
}
private int name;
private int age;
public int getName() {
return name;
}
public void setName(int name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}