史上最全threadlocal 详解
时间: 2023-10-31 13:58:48 浏览: 245
彻底理解ThreadLocal 1
ThreadLocal是一个Java类,它提供了一种线程本地的实例化方式。与普通变量不同的是,每个线程都会初始化一个完全独立的实例副本。这意味着每个线程都可以独立地访问和修改自己的ThreadLocal实例,而不会产生线程间的冲突。
ThreadLocal通常被使用private static修饰,以确保它的可见性和线程安全性。当一个线程结束时,它所使用的所有ThreadLocal实例副本都会被回收。这是因为ThreadLocalMap中的Entry保存了对ThreadLocal实例的强引用,而ThreadLocal实例在没有被其他对象引用时会被垃圾回收。
然而,ThreadLocal的使用也需要注意避免内存泄漏。在业务代码中,如果ThreadLocal实例被回收了,但是ThreadLocalMap中的Entry仍然保存了对ThreadLocal实例的引用,就会导致内存泄漏。这是因为ThreadLocalMap中的key使用了强引用,无法避免内存泄漏。因此,在使用完ThreadLocal后,一定要记得手动删除对应的Entry,或者在当前线程结束前清理ThreadLocal实例。
参考资料:
https://blog.csdn.net/u012190520/article/details/80974458
注意:由于您的问题是关于ThreadLocal的详解,因此我没有引用第三个参考资料。
阅读全文