1、ThreadLocal 的用途

给每个线程提供自己独立的变量副本,实现线程间隔离。

常用于:

  • 数据库连接、Session 缓存、用户上下文(如 userId)
  • 线程池中的线程复用时避免共享污染;
  • 实现线程封闭的设计模式

2、内存泄漏

使用弱引用作为 ThreadLocal 的键可以防止内存泄漏。若 Threadlocal 实例被不再需要的线程持有为强引用,那么当该线程结束时,相关的 ThreadLocal 实例及其对应的数据可能无法被回收,导致内存持续占用。而弱引用允许垃圾回收器在内存不足时回收对象。这样,当没有其他强引用指向某个 Threadlocal 实例时,它可以被及时回收,避免长时间占用内存。

如果使用强引用,可能有人会说那线程被回收之后就好了呀。重点来了!线程在我们应用中,常常是以线程池的方式来使用的,比如 Tomcat 的线程池处理了一堆请求,而线程池中的线程一般是不会被清理掉的,所以这个引用链就会一直在,那么 ThreadLocal对象即使没有用了,也会随着线程的存在,而一直存在着!

所以这条引用链需要弱化一下,而能操作的只有 Entry 和 key 之间的引用,所以它们之间用弱引用来实现。

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

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

相关文章

【C++】多线程同步三剑客介绍

目录 条件变量 头文件 主要操作函数 1、等待操作 2、唤醒操作 使用示例 信号量 头文件 主要操作函数 1、信号量初始化 2、等待操作(P操作) 3、信号操作(V操作) 4、获取信号量值 5、销毁信号量 使用示例 互斥锁 …

《Java Web程序设计》实验报告八 JSP+Servlet+JDBC+MySQL实现课程管理

目 录 一、实验目的 二、实验环境 三、实验步骤和内容 1、小组成员分工(共计4人) 2、实验方案 3、实验结果与分析 4、项目任务评价 四、遇到的问题和解决方法 五、实验总结 一、实验目的 1、掌握mysql的安装、数据库表单创建 2、掌握JDBC的链接…

基于数据挖掘的课程推荐系统研究

摘要本研究设计并开发了一套基于先进数据挖掘技术的智能化课程推荐系统。该系统创新性地采用了协同过滤算法与内容推荐算法相结合的混合推荐策略,通过深度分析学生在学习平台上的历史行为数据(包括选课记录、学习时长、测试成绩等)以及课程的…

【SCI 4区推荐】《Journal of Visual Communication and Image Representation》

期刊简介:《视觉传达与图像表示杂志》(Journal of Visual Communication and Image Representation)致力于发表视觉传达与图像表示领域的最前沿研究,特别强调多学科交叉领域中的新技术和理论应用。这本期刊涵盖的研究范围广泛&…

20250711_Sudo 靶机复盘

target:192.168.43.20 外部打点 (文件上传) nmap扫一下,80,22 开放 扫目录,发现 README.md [17:04:30] 200 - 664B - /Dockerfile [17:04:38] 200 - 34KB - /LICENSE …

STEP 7-Micro/WIN SMART 编程软件:从入门到精通的使用指南

STEP 7-Micro/WIN SMART 编程软件:从入门到精通的使用指南 在工业自动化控制领域,编程软件是连接工程师与 PLC 的桥梁,而 STEP 7-Micro/WIN SMART 作为 S7-200 SMART PLC 的专用编程工具,以其友好的界面和高效的编程能力备受青睐。…

模型训练与部署注意事项篇---resize

图像大小的影响在 YOLOv 系列模型的训练和推理部署过程中,图像大小的选择是影响模型性能(精度、速度、泛化能力)的关键因素之一。两者的关系既相互关联,又存在一定的灵活性,具体可从以下几个方面详细分析:一…

【Python】venv:配置独立镜像源

为某个特定的 venv 虚拟环境设置 pip 镜像源,使得该环境下的 pip 安装始终使用自定义镜像源,不影响系统 pip,也不依赖用户级配置文件。环境准备 1. 创建虚拟环境 python -m venv venv2. 激活虚拟环境Windows: .\venv\Scripts\activateLinux/m…

日本语言学校:签证制度类 Prompt 的结构整理路径与策略

日本语言学校:签证制度类 Prompt 的结构整理路径与策略 我们在构建语言留学语义系统的过程中,尝试以“签证风险”为例,探索如何让结构信息被更好地保留下来。本文不介绍 Prompt 本身,也不夸大其作用,而是希望借此与更…

RFCOMM协议详解:串口仿真与TCP/IP协议栈移植技术——面试高频考点与真题解析

一、RFCOMM 协议核心考点与高频面试问题1.1 协议基础与核心功能考点解析:RFCOMM(Radio Frequency Communication)是蓝牙协议栈中实现串口仿真的核心协议,基于 L2CAP 协议提供类似 RS-232 的可靠数据流传输。其核心功能包括&#x…

【编程实践】利用open3d生成物体的最长边方向并可视化

1 利用3d软件生成一个长方体 边长随意,长度随意 2 导出为模型文件并采样为点云数据 从mesh表面进行采样,点数根据自己需求进行设置,此处设置为100000。采样结果:3 识别OBB外接框并可视化长边方向import numpy as np import open3d…

1. 好的设计原则

目录一、应该具备的性质二、面向对象设计原则三、详解3.1 开闭原则3.2 单一职责原则3.3 里氏替换原则3.4 依赖倒置原则3.5 接口隔离原则3.6 合成复用原则3.7 迪米特原则一、应该具备的性质 可扩展性灵活性可插入性 二、面向对象设计原则 以下设计原则的重要性从高到低排列 …

深度学习图像分类数据集—猫七种表情识别分类

该数据集为图像分类数据集,适用于ResNet、VGG等卷积神经网络,SENet、CBAM等注意力机制相关算法,Vision Transformer等Transformer相关算法。 数据集信息介绍:猫七种表情识别分类:[Angry, Disgusted, Happy, Normal, Sa…

002_Claude模型与定价

Claude模型与定价 目录 Claude 4 模型系列模型功能对比定价策略计费说明企业定价使用建议 Claude 4 模型系列 Anthropic 推出了最新的 Claude 4 系列模型,提供不同性能等级以满足各种需求: Claude Opus 4 定位:最强大、最智能的模型特点…

【牛客刷题】游游的字母串

文章目录 一、题目介绍1.1 题目描述1.2 输入描述:1.3 输出描述:1.4 示例1二、解题二、解题思路2.1 核心问题2.2 关键策略三、算法分析3.1 为什么正确?3.2 复杂度分析四、模拟演练五、完整代码一、题目介绍 题目:游游的字母串 1.1 题目描述 对于一个小写字母而言,游游可以通…

docker容器高级管理-dockerfile创建镜像

目录一.构建LNMP架构1.构建nginx容器①拉取centos镜像(对镜像做基础架构)②创建dockerfile工作目录(可以是一个服务的项目)③创建dockerfile④创建启动脚本2.构建mysql数据库①创建mysql项目②配置dockersfile文件④创建镜像文件3…

北京-4年功能测试2年空窗-报培训班学测开-第四十九天

今天自习,在自习室嘤…今天效率不高,导致焦虑。不,或者该说,因为焦虑导致效率不高?没有达到自己预期,对自己也不满意临近结课,突然有些迷茫,我知道我要做的还有很多,要学…

css选择器的优先级以及用法

在 CSS 中,当多个选择器同时作用于一个元素,并且为该元素的同一属性设置了不同的值时,就需要依据选择器的优先级来确定最终应用哪个样式。本文详细介绍 CSS 选择器优先级的相关内容。 本文目录一、单个选择器的优先级1. 内联样式2. ID 选择器…

hercules zos 安裝 jdk 8

首先到 IBM 官網下載相關 PAX 檔 (SDK8_31bit_SR8_FP45.PAX.Z) 和 SDK8_31bit_readme.txt https://www.ibm.com/support/pages/java-sdk-products-zos 在 hercules 裡加一些新卷用來存放這個 JDK (UAPP02),UTMP02 也可以順便加上讓 OMVS IBMUSER 下多一些存放空間&…

张量索引操作

一.前言本期我们来说一下张量的索引操作,需要掌握张量不同索引操作,我们在操作张量时,经常需要去进⾏获取或者修改操作,掌握张量的花式索引操作是必须的⼀项能⼒。二.简单行、列索引import torchdata torch.randint(0, 10, [4, 5…