多线程学习----线程范围内的共享数据(五)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/havebeenstand/article/details/83477774

线程范围内的共享变量举例:

创建三个线程,它们都访问了三个对象,第一个对象设置值,第二三个对象取值,同一个线程设置的值,只能被相同的线程获取,


public class ThreadScopeShareDataStudy {

	private static int data = 0;
	private static Map<Thread,Integer> dataMap = new HashMap<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();
					System.out.println(Thread.currentThread().getName()+" push into data "+data);
					dataMap.put(Thread.currentThread(),data);
					new A().get();
					new B().get();
				}
			}).start();
		}
	}
	
	static class A{
		public void get(){
			int data = dataMap.get(Thread.currentThread());
			System.out.println("A from "+Thread.currentThread().getName()+" get data "+data);
		}
	}
	static class B{
		public void get(){
			int data = dataMap.get(Thread.currentThread());
			System.out.println("B from "+Thread.currentThread().getName()+" get data "+data);
		}
	}
}

猜你喜欢

转载自blog.csdn.net/havebeenstand/article/details/83477774
今日推荐