//作用为了确保线程安全,在每个数据库连接都需要操作各自数据的时候它会提供强力支持

package cn.code.ThreadLocal;
//ThreadLocal类的原理
import java.util.HashMap;
import java.util.Map;

public class ThreadLocalDemo<T> {
    Map<Thread,T>map = new HashMap<Thread,T>();
    public void set(T t){
        map.put(Thread.currentThread(), t);
    }
    public T get(){
        return map.get(Thread.currentThread());
    }
    public void remove(){
        map.remove(Thread.currentThread());
    }
}
/*
 * ThreadLocal 通常用在一个类的成员上
 * 多线程访问它时,每个线程都有自己的副本,互不干扰
 * Spring中把Connection放到了ThreadLocal中
 * 
 * */
class user{
    private ThreadLocal<String>username = new ThreadLocal<String>();
}