ThreadLocal与InheritableThreadLocal

news/2024/12/25 16:37:32/文章来源:https://www.cnblogs.com/wangbiaohistory/p/18630825
ThreadLocal底层是个map每次set值的时候把当前线程与值放到里面ThreadLocal.ThreadLocalMap threadLocals = null;

  

 

 

 

这种结构在大数据量并发请求时会,会产生内存泄漏。
请求时set进去,正常退出move掉,来不及remove的数据会停留在内存中,外界还有引用,gc不会收就会泄露

  如果子线程需要使用父级的数据去处理任务,然后回到父线程归纳处理,这时候ThreadLocal就不满足了

    private static ThreadLocal<String> inheritableThreadLocal = new ThreadLocal<>();public static void main(String[] args) throws IOException {inheritableThreadLocal.set("Value from parent thread");// 创建线程池ExecutorService executorService = Executors.newFixedThreadPool(5);// 提交任务(创建子线程)for (int i = 0; i < 5; i++) {executorService.submit(() -> {try {// 子线程中获取从父线程继承的值String value = (String) inheritableThreadLocal.get();System.out.println("Value in child thread: " + value);} finally {// 任务执行完毕后清除值inheritableThreadLocal.remove();}});}// 关闭线程池executorService.shutdown();}

  这时候子线程获取父级线程的数据就是空

 

InheritableThreadLocal是ThreadLocal子类,其区别

  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/858710.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 127.0.0.1连接正常,使用ip无法连接

mysql 127.0.0.1连接正常,使用ip无法连接 1. 使用 127.0.0.1连接mysql mysql -uroot -p -h127.0.0.12. 使用ip连接mysql # 查看当前虚机的ip地址 ip a # 使用ip地址连接mysql mysql -uroot -p -h192.168.91.133错误信息: ERROR 1130 (HY000): Host 192.168.91.133 is not allow…

el-Pagination的pagerCount传参报错

◾呈现的问题 控制台一直警告,看着很不爽,内容如下 [Vue warn]: Invalid prop: custom validator check failed for prop "pagerCount". found in ---> <ElPagination> <Pagination> <PolicyInfo> at src/views/policy/policyI…

最小二乘法-直线拟合-C语言

‌最小二乘法是一种数学统计方法,它通过最小化误差的平方和来寻找数据的最佳函数匹配‌。具体来说,它用于解决曲线拟合问题,即找到一个函数,使得该函数在给定数据点上的误差(通常是垂直距离)的平方和最小。这种方法广泛应用于数据分析和机器学习等领域,特别是在处理线性…

300+ Excel可视化图表模板:13种分类助你轻松制作专业图表

正文: 在职场中,专业的数据可视化能力是一项非常重要的技能。而使用高质量的Excel图表模板,可以让你的数据分析和展示工作更加高效!今天为大家推荐一份300+ Excel可视化图表模板合集,涵盖13种图表分类,适用于多种办公场景。 无论是数据分析、项目管理,还是日常汇报,这些…

protected修饰符讲解、java中继承的特点-java se进阶 day01

1.protected权限修饰符的介绍 之前在说权限修饰符时候,没有细说protected,今天,我们就来聊聊protected 如图,protected修饰符中,“不同包的子类”是我们要理解的我们在不同的包下创建一个Fu类和一个Zi类,然后在Zi类的同一个包中创建一个test类Zi类继承Fu类,然后test不继…

Spring Boot和Spring Cloud

1.Srping Boot SpringBoot是一款基于JAVA的开源框架。目的是为了简化Spring应用搭建和开发流程。是目前比较流行,大中小型企业常用的框架。 SpringBoot核心原理是自动装配(自动配置)。 在这之前,开发一个JavaWeb,Spring等项目要进行很多配置,使用了SpringBoot就不用在过多…

『玩转Streamlit』--上传下载文件

在Web应用中,文件的上传下载是交互中不可缺少的功能。 因为在业务功能中,一般不会只有文字的交互,资料或图片的获取和分发是很常见的需求。 比如,文件上传可让用户向服务器提交数据,如上传图片分享生活、提交文档用于工作协作等,丰富应用功能。 而文件下载则使用户能获取…

renben-openstack-制作镜像操作

openstack镜像制作(用虚拟机192.168.124.6) 制作centos7镜像,OpenStack支持qcow2 ios等多种镜像规格 (1)创建镜像的硬盘 (2)删除镜像的唯一性,封装压缩 在找一个虚拟机,专门用来做镜像,需要开启虚拟化yum install -y libvirt qemu-kvm libguestfs-toolsqemu-img crea…

iPhone获取设备UDID,安装测试包

一、Safari访问获取udid网址 使用 iOS 设备的 Safari 浏览器打开 http://www.betaqr.com.cn/udid 二、安装证书 打开链接后,点击“获取UDID”三、手机配置 打开“设置” -> “通用”四、安装证书 点开证书之后五、获取UDID 安装证书之后,切换到Safari,长按出现的UDID复制…

Cursor - AI代码编辑器的使用指南

Cursor 是一个强大的 AI 代码编辑器,提供了多种功能来提升您的编程效率。本文将详细介绍如何使用 Cursor 及其主要功能,帮助您更好地利用这个工具。 1. 自动完成功能 Cursor 包含强大的自动完成功能,通过 Tab 键补全代码,可预测您的下一次编辑。启用后,它始终处于打开状态…

PbootCMS 模板常用的if条件判断语句

问题:PbootCMS模板常用的if条件判断语句。 答案:导航高亮:html{pboot:if([nav:scode]=={sort:tcode})}class="active"{/pboot:if}判断有无子菜单:html{pboot:if([nav:soncount]>0)}...{/pboot:if}二级栏目循环判断:html{pboot:nav} <li><a href=&qu…

秸秆焚烧智能监测摄像机

秸秆焚烧智能监测摄像机可以通过设置监测区域和参数,实现对秸秆焚烧情况的自动监测和报警。一旦系统检测到异常情况,比如秸秆燃烧量过大或燃烧产生大量烟尘,会立即发送警报通知相关部门,以便及时采取控制措施。秸秆焚烧智能监测摄像机可以广泛应用于农村地区的秸秆焚烧场所…