ThreadLocal

ThreadLocal: 维护线程局部的变量。

ThreadLocal 不是线程。它就是一个Map。可以保存对象。

它保存的对象,只与当前线程相关。

当一个线程还没有运行完成时,如果不想传递数据,可以通过ThreadLocal来保存与这个Thread相关数据。

Demo

 1 public class TestThreadLocal {
 2     public static ThreadLocal<Object> tl=new ThreadLocal<Object>();
 3     public static Object thread()
 4     {        
 5         Object o=tl.get();//获取数据
 6         if(o==null)
 7         {
 8             o=new Random().nextInt(100);
 9             tl.set(o);//设置数据
10         }
11         return o;
12     }    
13 }
 1 public static void main(String[] args) {
 2         Object o1=TestThreadLocal.thread();
 3         Object o2=TestThreadLocal.thread();
 4         System.out.println("o1:"+o1+"   o2:"+o2);//mian调用
 5         aa();    //main调用
 6         new Thread()
 7         {
 8             public void run() {
 9                 Object o3=TestThreadLocal.thread();
10                 System.out.println("o3:"+o3);//线程调用                
11                 aa();//线程调用
12             }
13         }.start();
14     }
15     
16     private static void aa()
17     {
18         Object o4=TestThreadLocal.thread();
19         System.out.println("o4:"+ o4);
20     }
21 }

原文地址:https://www.cnblogs.com/liuwt365/p/4129337.html