面试问题及答案合计

wuchangjian2021-11-07 17:21:32编程学习

面试总结

1.说一下ThreadLocal

​ 1.ThreadLocal是java中所提供的线程本地存储机制,可以利用该机制将数据缓存在某个线程内部,该线程在任意时刻,任意方法中获取缓存的数据

​ 2.ThreadLocal底层是通过ThreadLocalMap来实现的,每个Thread对象(注意不是ThreadLocal对象)中都存在一个ThreadLocalMap,Map的key为ThreadLocal对象,Map的value为需要缓存的值

​ 3.如果在线程池中使用ThreadLocal会造成内存泄漏,因为当ThreadLocal对象使用完之后,应该要把设置的key,value,也就是entry对象进行回收,但线程池中的线程不会回收,而线程对象是通过强引用指向ThreadLocalMap,ThreadLocalMap也是通过强引用指向Entry对象,线程不被回收,Entry对象也就不会被回收,从而出现内存泄漏,解决办法是,在使用了ThreadLocal对象之后,手动调用ThreadLocal的remove方法,手动清除Entry对象

​ 4.ThreadLocal经典的应用场景就是连接管理(一个线程持有一个链接,该链接对象可以在不不同的方法之间进行传递,线程之间不共享同一个链接)

[]: https://www.bilibili.com/video/BV1mw411f719?p=4 “说一下ThreadLocal”

相关文章

设计模式——(12)代理模式

1、定义 由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,...

格式化时间

// 格式化时间 public formatDate(time: any, fmt?...

[暴力][线段判交]Pick-up sticks POJ2653

[暴力][线段判交]Pick-up sticks POJ2653

Stan has n sticks of various length. He thro...

Spring Cloud简述及简单入门实例

1 概述 Spring Cloud基于Spring Boot,提供了多个组...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。