java兑现多线程范围内的数据共享
java实现多线程范围内的数据共享
代码如下,比较坑爹,就是上一篇文章的hashmap改为了ThreadLocal
public class ThreadScopeShareData { /** * @param args */ // private static HashMap<Thread, Integer> map = new HashMap<Thread, Integer>(); private static ThreadLocal<Integer> threadLocal = new ThreadLocal<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() +" data is "+data); // map.put(Thread.currentThread(), data); threadLocal.set(data); new A().get(); new B().get(); } }).start(); } } static class A{妹,希望你能理解 public void get(){ int data = threadLocal.get();//map.get(Thread.currentThread()); System.out.println("A get data:" + data + " from " + Thread.currentThread().getName()); } } static class B{ public void get(){ int data = threadLocal.get();//map.get(Thread.currentThread()); System.out.println("B get data:" + data + " from " + Thread.currentThread().getName()); } } }