1. 程式人生 > >java多執行緒:4、執行緒範圍內的資料共享_公共變數

java多執行緒:4、執行緒範圍內的資料共享_公共變數

直接上例項,注意事項已經在程式中做了註釋,以此共勉。加油

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); } } }