---恢复内容开始---

利用Map,HashMap键值对的数据结构,实现并发线程中线程范围内数据共享。

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
package cn.qy.heima2;

import java.util.HashMap;
import java.util.Map;
import java.util.Random;

public class ThreadScopeShareData 
{
    private static int data;
    private static Map<Thread,Integer> threadData=new HashMap<Thread,Integer>();
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        for(int i=0;i<2;i++)
        {
            new Thread(new Runnable() {                
                        @Override
                        public void run() {
                            // TODO Auto-generated method stub
                            int data=new Random().nextInt();                
                            System.out.println(Thread.currentThread().getName()
                                    +"has put data:"+data);        
                            threadData.put(Thread.currentThread(),data);                                        
                            new A().get();
                            new B().get();
                        }
                    }).start(); 
    }
    }
static class A
{
public void get()
{
synchronized (ThreadScopeShareData.class) {
data=threadData.get(Thread.currentThread());
System.out.println("A from"+Thread.currentThread().getName()+"get data:"+data);
}
}
}
static class B
{
public synchronized void get()
{
synchronized (ThreadScopeShareData.class) {
data=threadData.get(Thread.currentThread());
System.out.println("B from"+Thread.currentThread().getName()+"get data:"+data);
}
}
}
}

 Java实现并发线程中线程范围内共享数据 随笔 第1张

 

 Java实现并发线程中线程范围内共享数据 随笔 第2张

---恢复内容结束---

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄