set
Thread.currentThread.map(ThreadLocal, T)
设到了当前线程的map中
为什么使用Entry extends WeakReference
ThreadLocal<M> tl = new ThreadLocal<>();tl.set(new M());tl.remove();
若是强引用,即使 tl = null,但key的引用依然指向ThreadLocal对象,所以会有内存泄漏,而弱引用不会。
但还是会有内存泄露,ThreadLocal被回收,key值变成null,导致整个value再也无法被访问到,因此存在内存泄露,所以最后要remove()
使用
用途
声明式事务,保证同一个Connection
