直接上实例,注意事项已经在程序中做了注释,以此共勉。加油
import java.util.Map;
import java.util.Random;
import java.util.concurrent.ConcurrentHashMap;
/**
*线程范围内的共享变量
*/
public class ThreadTest2 {
/**
*
* 如果在这个地方错误的使用了HashMap,说明多线程编程方面还需继续努力哟,尴尬的说我就数据需要继续努力的一员。。。
*
* 补充:多线程开发的过程中必须使用线程安全的集合
*/
private static Map<Thread,Integer> map=new ConcurrentHashMap <Thread,Integer>();
public static void main(String[] args) {
for(int i=0;i<2;i++){
new Thread(new Runnable(){
@Override
public void run() {
int data=new Random().nextInt();
map.put(Thread.currentThread(), data);
System.out.println(Thread.currentThread().getName()+" put data :"+data);
new A().get();
new B().get();
}
}).start();
}
}
static class A{
public void get(){
int data=map.get(Thread.currentThread());
System.out.println("A:"+Thread.currentThread().getName()+"-->"+data);
}
}
static class B{
public void get(){
int data=map.get(Thread.currentThread());
System.out.println("B:"+Thread.currentThread().getName()+"-->"+data);
}
}
}