
当前位置:首页 > 图灵资讯 > java面试题> 金三银四精选面试题-ThreadLocal有哪些应用场景?它底层是如何实现的?
金三银四精选面试题-ThreadLocal有哪些应用场景?它底层是如何实现的?
发布时间:2023-11-14 10:27:48
ThreadLocal有哪些应用场景?它底层是如何实现的?
- ThreadLocal是Java中所提供的线程本地存储机制,可以利用该机制将数据缓存在某个线程内部,该线程可以在任意时刻、任意方法中获取缓存的数据
- ThreadLocal底层是通过ThreadLocalMap来实现的,每个Thread对象(注意不是ThreadLocal对象)中都存在一个ThreadLocalMap,Map的key为ThreadLocal对象,Map的value为需要缓存的值
- 如果在线程池中使用ThreadLocal会造成内存泄漏,因为当ThreadLocal对象使用完之后,应该要把设置的key,value,也就是Entry对象进行回收,但线程池中的线程不会回收,而线程对象是通过强引用指向ThreadLocalMap,ThreadLocalMap也是通过强引用指向Entry对象,线程不被回收,Entry对象也就不会被回收,从而出现内存泄漏,解决办法是,在使用了ThreadLocal对象之后,手动调用ThreadLocal的remove方法,手动清楚Entry对象
- ThreadLocal经典的应用场景就是连接管理(一个线程持有一个连接,该连接对象可以在不同的方法之间进行传递,线程之间不共享同一个连接)

上一篇 金三银四精选面试题-你的应用突然出现了OOM异常,你会如何排查?
下一篇 金三银四精选面试题-ReentrantLock分为公平锁和非公平锁,那底层分别是如何实现的?
标签:
Java教程Java基础Java编程技巧面试题Java面试题
下一篇 金三银四精选面试题-ReentrantLock分为公平锁和非公平锁,那底层分别是如何实现的?
文章素材均来源于网络,如有侵权,请联系管理员删除。
最新资讯
查看更多-
1
金九银十精选面试题-线程池有哪几种状态?每种状态分别表示什么?
-
2
金九银十精选面试题-为什么不建议使用Executors来创建线程池?
-
3
金九银十精选面试题-Java中有哪几种方式来创建线程执行任务?
-
4
金三银四精选面试题-SpringBoot的四种Handler类型
-
5
金三银四精选面试题-Mysql中九种索引失效场景分析
-
6
金三银四精选面试题-Tomcat中为什么要使用自定义类加载器?
-
7
金三银四精选面试题-Sychronized的锁升级过程是怎样的?
-
8
金三银四精选面试题-ReentrantLock分为公平锁和非公平锁,那底层分别是如何实现的?
-
9
金三银四精选面试题-ThreadLocal有哪些应用场景?它底层是如何实现的?
-
10
金三银四精选面试题-你的应用突然出现了OOM异常,你会如何排查?