天天看點

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是一個很好用的工具