java多執行緒:4、執行緒範圍內的資料共享_公共變數
阿新 • • 發佈:2019-02-09
直接上例項,注意事項已經在程式中做了註釋,以此共勉。加油
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);
}
}
}