ThreadLocal:session
线程的一个本地化对象。当多线程中的对象使用ThreadLocal维护变量是,ThreadLocal为每一个使用该变量的线程分配一个独立的变量副本。多线程
threadlocal一般定义为静态变量线程
工做原理:设计
内部维护一个ThreadLocalMap,每次set数据时是用ThreadLocal自己做为Key对象
常见使用场景:生命周期
1.session 管理rem
常见的坑:io
1.ThreadLocal是与线程绑定的一个变量,假设没有将ThreadLocal内的变量删除(remove)或替换,它的生命周期将会与线程共存,假如咱们使用的是线程池,会致使下一个线程获取到垃圾数据thread
解决方案:从设计的角度要让ThreadLocal的set、remove善始善终,一般在外部调用的代码中使用finally来remove数据变量