企业网站管理中心,网站海外推广,外包做的网站怎么维护,建造官网文章目录 #x1f354;ThreadLocal中为什么要使用弱引用⭐总结 #x1f354;ThreadLocal中为什么要使用弱引用
ThreadLocal可以在线程中存放线程的本地变量#xff0c;保证数据的线程安全 ThreadLocal是这样子保存对象的#xff1a;
在每个线程中#xff0c;存放了一个… 文章目录 ThreadLocal中为什么要使用弱引用⭐总结 ThreadLocal中为什么要使用弱引用
ThreadLocal可以在线程中存放线程的本地变量保证数据的线程安全 ThreadLocal是这样子保存对象的
在每个线程中存放了一个ThreadLocalMap对象本质上就是一个数组实现的哈希表里面存放多个Entry对象每个Entry对象继承自弱引用内部存放ThreadLocal对象同时用强引用引用保存的ThreadLocal对应的value值 下面我们以代码为例 下面我们可以使用get方法看看刚才保存的value值能不能获取到 当我们不使用ThreadLocal对象的时候threadlocalnull由于是弱引用那么在垃圾回收后ThreadLocal对象可以被回收 这就体现了弱引用的好处 在垃圾回收的过程中假设这个东西只有弱引用关联那么这个对象是可以被回收的所以尽管它还在被线程的ThreadLocalMap引用着它依然可以正常的回收掉。 相反的如果我们没有使用弱引用使用了强引用在我们允许完这段代码后这个threadlocal仍然不能被回收这样就造成了内存泄漏问题
但是现在这个Entry对象和value对象能不能被回收呢显然是不行的。 因为我们通过ThreadLocal的数组还是有一个强引用关联到了Entry对象和value值那么我们可以这么去除掉这一部分数据呢 在ThreadLocal不再使用的时候调用remove方法将Entry对象的引用关系去掉这样子就可以回收掉这2个对象了
⭐总结 在技术的道路上我们不断探索、不断前行不断面对挑战、不断突破自我。科技的发展改变着世界而我们作为技术人员也在这个过程中书写着自己的篇章。让我们携手并进共同努力开创美好的未来愿我们在科技的征途上不断奋进创造出更加美好、更加智能的明天