比较好的学习资料:
个人理解:
ThreadLocal可以看做一个工具类:
1、让线程更容易操作保存在当前线程内部的成员变量->提供get、set、remove方法调用。
2、当线程消亡时,则该线程的成员变量堆内存可以顺利回收。
ThreadLocal1和ThreadLocal2的hashcode不一样,可以区分不同的ThreadLocal实例。
同一个ThreadLocal实例中,不同的线程的ThreadLocalMap的引用地址不一样,所以获取的ThreadLocalMap的值不一样,即线程只能取当前线程自己的ThreadLocalMap中的值。
使用:
public final class FrogHolder {
private static ThreadLocalfrogLocal =new ThreadLocal();
public static void set(String id) {
frogLocal.set(id);
}
public static Stringget() {
return frogLocal.get();
}
public static void clear() {
frogLocal.remove();
}
}