创建线程范围内的共享变量
package cn.itcast.heima2;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
/**
* 七、实现线程范围的共享变量
*
* 为了实现线程中数据的独立
* @author asus
*
*/
public class ThreadScopeShareDate {
//声明一个全局变量,供其他类调用
private static int date = 0;
//声明这个就是为了线程中数据的同步,每循环一次放进去一次数据
private static Map<Thread,Integer> threadData = 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 date = new Random().nextInt();
//输出此线程的名字和生成的date数值
System.out.println(Thread.currentThread().getName()+"has put data :"+date);
threadData.put(Thread.currentThread(), date);
//调用下面A类中的get方法
new A().get();
//去B模块取数据
new B().get();
}
}).start();
}
}
/**
* 创建一个A类
* @author asus
*
*/
static class A{
public void get(){
int date = threadData.get(Thread.currentThread());
//输出此线程的名字和生成的date数值
System.out.println("A from "+Thread.currentThread().getName()
+"get data :"+date);
}
}
/**
* 创建一个B类
* @author asus
*
*/
static class B{
public void get(){
int date = threadData.get(Thread.currentThread());
//输出此线程的名字和生成的date数值
System.out.println("B from "+Thread.currentThread().getName()
+"get data :"+date);
}
}
}