学习多线程1---ThreadLocal模拟

ThreadLocal实际上是一个Map结构

Key是Thread名字,value是封装在每个Thread里的变量

很多框架都使用ThreadLocal ,主要用于不被线程共享的变量上面

模拟代码如下

package com.test;

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

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

  

原文地址:https://www.cnblogs.com/hzmbbbb/p/4280260.html