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; } } }