您的位置:首页 > 其它

ThreadLocal

2016-04-05 20:45 211 查看
Thread线程-->Runnable任务

当多个资源对同一资源进行访问时,可能出现问题.

使用ThreadLocal可以避免这个问题

package com.threadLocal;

import org.junit.Test;

public class Deamo {
@Test
public void fun(){
ThreadLocal<String> t = new ThreadLocal<String>();
t.set("haha");
String s = t.get();
t.remove();
System.out.print(s);
}
}


* 它的内部是一个Map

当前线程作为key,保证了对应得值不能被其他线程访问

class TL<T> {
private Map<Thread, T> map = new HashMap<Thread, T>();

public void set(T data) {
// 使用当前线程做key
map.put(Thread.currentThread(), data);
}

public T get() {
return map.get(Thread.currentThread());
}

public void remove() {
map.remove(Thread.currentThread());
}
}


* ThreadLocal通常用在一个类的成员上

* 多个线程访问它时,每个线程都有自己的副本,互不干扰!

* Spring中把Connection放到了ThreadLocal中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: