首页 > 代码库 > ThreadLocal

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 }

 

ThreadLocal