参考地址: https://www.cnblogs.com/dolphin0520/p/3920407.html
ThreadLoacl 本地线程变量
为线程创建一个副本, 一个内部类ThreadLoaclMap
每个线程有自己的ThreadLocal 并作为ThreadLoaclMap的键
使用前必须先set 在get
package mall.test; /** * ThreadLocal * 为线程创建一个副本, 一个内部类ThreadLoaclMap * 每个线程有自己的ThreadLocal 并作为ThreadLoaclMap的键 * 使用前必须先set 在get * @author guo * */ public class School { private static School school; private static ThreadLocal<School> threadLocal = new ThreadLocal<School>(); private School(){ } public static School instance() { School s = threadLocal.get(); if(s == null) { school = new School(); threadLocal.set(school); } return threadLocal.get(); } public static void print(){ System.out.println(Thread.currentThread().getName()); } public static void main(String[] args) { // TODO Auto-generated method stub //打印出main School.instance().print(); Thread t = new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub //打印出Thread-0 School.instance().print(); } }); t.start(); } }
常用的使用场景为 用来解决 数据库连接、Session管理等。