ThreadLocal

ThreadLocal通常用在一个类的成员上,多个线程访问它时,每个线程都有自己的副本,互不干扰。

在Spring中把Connection放到了ThreadLocal中。

ThreadLocal类只有三个方法:

void set(T value):保存值

T get():获取值

void remove():移除值

 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 }

 

posted @ 2019-07-08 23:33  zzu_Lee  阅读(169)  评论(0编辑  收藏  举报