ThreadLocal

ThreadLocal一般用在一個類的成員上,多個線程訪問它時,每一個線程都有本身的副本,互不干擾。java

在Spring中把Connection放到了ThreadLocal中。spa

ThreadLocal類只有三個方法:線程

void set(T value):保存值code

T get():獲取值對象

void remove():移除值blog

 1 package com.itcast.thread;
 2 
 3 import java.util.HashMap;
 4 import java.util.Map;
 5 
 6 import org.junit.Test;
 7 
 8 /**
 9  * ThreadLocal對象的用法
10  * @author hp
11  *
12  */
13 public class Demo1 {
14     @Test
15     public void fun1() {
16         ThreadLocal<String> t1=new ThreadLocal<String>();
17         t1.set("hello");
18         String s=t1.get();
19         t1.remove();
20         System.out.println(s);
21     }
22 }
23 //ThreadLocal內部實際上是個Map來保存數據。它內部使用當前線程做爲鍵key。
24 class TL<T> {
25     private Map<Thread,T> map=new HashMap<Thread,T>();
26     
27     public void set(T data) {
28         map.put(Thread.currentThread(), data);
29     }
30     public T get() {
31         return map.get(Thread.currentThread());
32     }
33     public void remove() {
34         map.remove(Thread.currentThread());
35     }
36 }
相關文章
相關標籤/搜索