ThreadLocal其实是一个Map结构java
Key是Thread名字,value是封装在每一个Thread里的变量框架
不少框架都使用ThreadLocal ,主要用于不被线程共享的变量上面dom
模拟代码以下ide
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; } } }