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 }
相关文章
相关标签/搜索