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