云南 网站建设网站中国互联网数据平台
news/
2025/9/23 21:38:48/
文章来源:
云南 网站建设网站,中国互联网数据平台,外贸公司网站如何做推广,网站百度知道怎么做推广ThreadLocal基本原理
一、定义 ThreadLocal是java中所提供的线程本地存储机制#xff0c;可以利用改机制将数据缓存在线程内部#xff0c;该线程可以在任意时刻、任意方法中获取数据 二、底层原理 ThreadLocal底层是通过ThreadLocalMap来实现的#xff0c;每个Thread对象中…ThreadLocal基本原理
一、定义 ThreadLocal是java中所提供的线程本地存储机制可以利用改机制将数据缓存在线程内部该线程可以在任意时刻、任意方法中获取数据 二、底层原理 ThreadLocal底层是通过ThreadLocalMap来实现的每个Thread对象中都存在一个ThreadLocalMap此Map的key为ThreadLocal对象Map的value为需要缓存的值 三、ThreadLocal易造成的内存泄漏
内存泄漏原因 如果在线程池中使用ThreadLocal会造成内存泄漏因为当ThreadLocal对象使用完成以后应该要把设置的keyvalue也就是Entry对象进行回收但线程池中的线程不会被回收而线程对象是通过强引用指向ThreadLocalMap而ThreadLocalMap也是强引用指向Entry对象线程不会被回收那么Entry也就不会被回收。从而出现内存泄漏。 解决办法 在使用了ThreadLocal对象之后手动调用ThreadLocal的remove方法手动清除Entry对象。 四、使用场景 1.spring中的事务管理器就是使用了ThreadLocal 2.在拦截器中存储登录用户的信息那么在该线程的任意方法中就可以取出 3.参数传递a调bb调c为了传递某参数可以放在ThreadLocal中 4.pageHelper的pageHelper.startPage(m,n);他是存在ThreadLocal中的在mybatis拦截器里面再拿出来拼接SQL 五、InheritableThreadLocal与TransmittableThreadLocal InheritableThreadLocal主要用于子线程创建时需要自动继承父线程的ThreadLocal变量方便必要信息的进一步传递 TransmittableThreadLocal 在使用线程池等会缓存线程的组件情况下传递ThreadLocal
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/913967.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!