天天看点

ThreadLocal简单的学习和理解过程

       ThreadLocal,是java.lang.ThreadLocal类中的一个接口,翻译过来就是线程的局部变量,而不是顾名思义的本地线程.他的本质就是一个变量,用于在当前线程中共享一些数据.

      在ThreadLocal这个工具类的底层就是一个Map集合,key是存放当前线程,value存放当前所需要的一些共享数据.

      Eg:

      模拟ThreadLocal类

public classThreadLocal{

privateMap<Thread,Object> map = new HashMap<Thread,Object>();

public voidset(Connection conn){

map.put(Thread.currentThread(),conn);//以当前线程对象作为key

}

public Objectget(){

map.get(Thread.currentThread());//只有当前线程才能取出value数据

}

}

       在ThreadLocal中经常使用的方法有以下几个:

       1,voidset(Object value),将数据设置到线程中.

       2, public voidremove(),将线程内的数据删除,以便节省内存空间,在现在JDK1.5以后的版本中我们常常是用这个方法来加速内存的回收处理,而不是单纯的销毁线程内的数据,销毁线程内的数据我们可以通过直接关闭线程的方法.

       在线程的使用中,如果有多线程需要多次访问同一个初始化值相同的对象的时候, ThreadLocal是一个很好用的工具