使用方法
ThreadLocal<String> tl=new ThreadLocal();
tl.set("this is a test"); // 设置值
tl.get(); // 获取值
tl.remove(); // 移除值
内存泄漏问题
ThreadLocalMap是Thread的属性,因此生命周期和Thread是一样的。
ThreadLocalMap存储值是以ThreadLocal为键,我们给的值作为值。
所以突然ThreadLocal是null了,也就是要被垃圾回收器回收了,但是此时ThreadLocalMap生命周期和Thread的一样,它不会回收,这时候就出现了一个现象。那就是ThreadLocalMap的key没了,但是value还在,这就造成了内存泄漏。
解决办法:使用完ThreadLocal后,执行remove操作,避免出现内存溢出情况。