ThreadLocal用于保存某个线程的共享变量。
ThreadLocal在每个线程中对该变量会创建一个副本,即每个线程内部都会有一个该变量,且在线程内部任何地方都可以使用,线程之间互不影响。
值的存取过程: ThreadLocal --> Current Thread --> ThreadLocalMap<ThreadLocal, Value> --> ThreadLocalMap.Entry<ThreadLocal, Value>
防止ThreadLocal的弱引用问题(会出现内存泄露):
使用完线程共享变量后,显示调用remove方法清除线程共享变量
将ThreadLocal定义为private static
public class ThreadLocalTest { private static ThreadLocal<String> threadLocal = new ThreadLocal<String>(); public static void main(String[] args) throws Exception { threadLocal.set(Thread.currentThread().getName()); Thread thread = new Thread(){ public void run() { threadLocal.set(Thread.currentThread().getName()); System.out.println(threadLocal.get()); threadLocal.remove(); }; }; thread.start(); //join:等待thread执行完毕后,才能继续往下执行。join存在很大的性能问题,建议用CountDownLatch、CyclicBarrier等类替代join thread.join(); System.out.println(threadLocal.get()); threadLocal.remove(); } }
相关推荐
ThreadLocal应用示例及理解,这个写了相关的示例,可以参考一下。
NULL 博文链接:https://xuranpaoche.iteye.com/blog/1514071
ThreadLocal入门教程。 讲解了线程安全和ThreadLocal的使用的基本知识。
NULL 博文链接:https://justsee.iteye.com/blog/791919
ThreadLocal
javaee开发常见的模式有MVC模式,在C层中常常会再次分层,如:servlet(web层)、service(业务逻辑层)、dao(数据访问层),其中service和dao最容易混在一起,如转...所以,使用ThreadLocal可以解决这样的分层问题。
理解ThreadLocal 理解ThreadLocal 理解ThreadLocal 理解ThreadLocal
ThreadLocalMap是ThreadLocal类中的内部类,实例却被Thread类持有,相当于每个线程持有一个map
NULL 博文链接:https://bijian1013.iteye.com/blog/2380233
Java中ThreadLocal的设计与使用.doc
ThreadLocal源码分析和使用
ThreadLocal的几种误区ThreadLocal的几种误区ThreadLocal的几种误区
NULL 博文链接:https://yizhenn.iteye.com/blog/2293339
学习ThreadLocal,了解其中的原理,以及学习其中的优点!避免坑点!!
本例以序列号生成的程序为例,展示ThreadLocal的使用
主要介绍了Android 中 ThreadLocal使用示例的相关资料,这里提供示例代码帮助大家学习理解这部分内容,需要的朋友可以参考下
正确理解ThreadLocal.pdf
NULL 博文链接:https://xxxxxfsadf.iteye.com/blog/518275
DbUTils中用ThreadLocal类