JUC之ThreadLocal

news2024/11/16 0:29:45

文章目录

  • 1 基础知识
    • 1.1 强软弱虚四种引用
  • 2 ThreadLocal出现的好处
  • 3 ThreadLocal源码分析
    • 3.1 ThreadLocal内存泄露问题
    • 3.2 ThreadLocal为什么使用的是弱引用
    • 3.3 清扫过期的Entry
  • 4 ThreadLocal使用建议

1 基础知识

1.1 强软弱虚四种引用

【整体结构】
在这里插入图片描述
【强引用】
在这里插入图片描述
【软引用】
在这里插入图片描述
【弱引用】
在这里插入图片描述
在这里插入图片描述
【虚引用】
在这里插入图片描述
在这里插入图片描述

2 ThreadLocal出现的好处

在这里插入图片描述

3 ThreadLocal源码分析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.1 ThreadLocal内存泄露问题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2 ThreadLocal为什么使用的是弱引用

在这里插入图片描述
在这里插入图片描述

3.3 清扫过期的Entry

expungeStaleEntry

4 ThreadLocal使用建议

【初始化】

ThreadLocal<String> t1 = ThreadLocal.withInitial(() -> "hello");

【声明为static】
建议把ThreadLocal修饰为static

ThreadLocal实现线程隔离不在于它自己本身,而在于ThreadLocalMap,所以ThreadLocal可以只初始化一次,只分配一次存储空间就可以了。 无需作为成员变量多次被初始化。

使用完之后需要显示调用remove

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(文件[夹]批量分类整理_多级匹配_交叉匹配_路径结构交叉调整)文件[夹]批量复制

​ 首先&#xff0c;需要用到的这个工具&#xff1a; 百度 密码&#xff1a;qwu2 蓝奏云 密码&#xff1a;2r1z ​如果没有使用过此工具&#xff0c;建议阅读此教程前&#xff0c;先看下这篇文章&#xff1a;https://mp.csdn.net/mp_blog/creation/editor/113605549 原理&…

【Python爬虫与数据分析】文件读写

目录 一、概述 二、txt文件读写 三、csv文件读写 四、Json文件读写 一、概述 读写模式&#xff1a; r&#xff1a;读数据w&#xff1a;覆盖写入a&#xff1a;追加写入rb&#xff1a;以二进制形式读出wb&#xff1a;以二进制形式写入ab&#xff1a;以二进制形式追加r、w、…

Java log 日志

文章目录 log4j.properties配置 log4j.properties 配置 log4j.rootLoggerINFO, stdoutlog4j.appender.stdoutorg.apache.log4j.ConsoleAppender log4j.appender.stdout.layoutorg.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern%d{yyyy-MM-dd H…

MySQL单表查询练习题

目录 第一题 第二题 第三题 第一题 1.创建数据表pet&#xff0c;并对表进行插入、更新与删除操作&#xff0c;pet表结构如表8.3所示。 (1&#xff09;首先创建数据表pet&#xff0c;使用不同的方法将表8.4中的记录插入到pet表中。 mysql> create table pet( name varchar(…

网络安全(黑客)内网渗透基础知识

0x01 内网概述 内网也指局域网&#xff08;Local Area Network&#xff0c;LAN&#xff09;是指在某一区域内由多台计算机互联成的计算机组。一般是方圆几千米以内。局域网可以实现文件管理、应用软件共享、打印机共享、工作组内的历程安排、电子邮件和传真通信服务等功能。 内…

交叉导轨的结构与特长

在交叉导轨中&#xff0c;精密滚柱互相直交地组合在一起的滚柱保持架与设置在专用轨道上的90V形沟槽滚动面组合起来使用。通过将2列滚子导轨平行地装配&#xff0c;使导轨系统能承受4个方向的负荷。而且&#xff0c;因能向交叉滚子导轨施加预压&#xff0c;从而能获得无间隙且高…

zookeeper单机安装

1 检查环境jdk 参考&#xff1a;https://blog.csdn.net/weixin_44098426/article/details/128446376 2 解压安装包 mkdir -p /opt/zookeeper mv /home/wh/software/zk/apache-zookeeper-3.5.7-bin.tar.gz /opt/zookeeper tar -xzvf apache-zookeeper-3.5.7-bin.tar.gz 3 配置…

在Windows环境下安装Elasticsearch 8.8.2

Elasticsearch是一种开源的分布式搜索和分析引擎&#xff0c;被广泛应用于构建实时搜索、日志分析、数据可视化等应用。本文将详细介绍如何在Windows环境下安装和配置Elasticsearch 8。 安装Elasticsearch 步骤1&#xff1a;准备工作 在开始安装之前&#xff0c;确保已满足以…

多元回归预测 | Matlab灰狼算法(GWO)优化极限梯度提升树XGBoost回归预测,GWO-XGBoost回归预测模型,多变量输入模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元回归预测 | Matlab灰狼算法(GWO)优化极限梯度提升树XGBoost回归预测,GWO-XGBoost回归预测模型,多变量输入模型 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及以上。 部分源…

GPON MAC SFP ONU模块介绍与应用

伴随着网络通讯技术的发展&#xff0c;pon无源光网络正逐步走进人们的视野&#xff1b;在这之前你是否仅知道以太网接入&#xff1f;相比与以太网接入&#xff0c;pon作为一种点到多点网络&#xff0c;具有运维成本低、服务范围广、资源占用少等优势&#xff1b;我们最为熟知的…

CSS自学框架之漂浮提示(上方显示 底侧显示 右侧显示 左侧显示)

漂浮提示可以用较为隐藏的方式为用户提供帮助或引导信息&#xff0c;将鼠标移入文字内容后展示。 css代码&#xff1a; /* 浮漂提示框 */[myth-tag]{ position: relative }[myth-tag]:before, [myth-tag]:after{z-index: 1;opacity: 0;position: absolute;pointer-events: non…

LVS负载均衡集群之LVS-NAT集群

目录 一、什么是集群&#xff1f; 1.1、集群&#xff08;cluster&#xff09;的含义 1.2、问题 1.3解决方法 二、集群分类 2.1、负载均衡集群(Load Balance Cluster) 2.2、高可用集群(High Availability Cluster) 2.3、高性能运算集群 (High Performance Computer Clust…

企业服务器数据库被360后缀勒索病毒攻击后的正确处理方式

在数字化时代&#xff0c;企业服务器数据库的安全性至关重要。然而&#xff0c;即使采取了各种安全措施&#xff0c;仍然有可能遭受到360等后缀的勒索病毒网络攻击。近期&#xff0c;很多企业的云服务与物理服务器遭到了360后缀的勒索病毒攻击&#xff0c;导致企业内部数据库中…

能够ping通服务器的同时端口不通的排查方法

概述 当您在客户端访问目标服务器时&#xff0c;如果能ping通&#xff0c;但业务端口无法访问&#xff0c;您可以参见以下方法进行排查。 步骤一&#xff1a;实例安全组检查 1、登录ECS管理控制台&#xff0c;单击实例。 2、在顶部菜单栏左上角处&#xff0c;选择地域。 3、…

Visual Studio下2022Opencv的配置

Visual studio2022 opencv的配置 先从官网下载opencv &#xff1a; opencv releases 下载 ​ 我这里的开发环境是window版本&#xff0c;我们选择Windows版本进行下载 点开下载的文件&#xff0c;输入需要保存的路径 记住你保存的路径(我这里安装再F:) 安装需要时间静等安装…

修改Jeecg-boot context-path(附加图片+Nginx配置)

文章目录 需求描述解决方案前端后端Nginx 需求描述 前端框架采用的是ant design vue ,后端框架采用的是jeecg-boot,前端请求后端地址中包含jeecg-boot字样&#xff0c;想修改为其它的名字&#xff0c;修改方式如下 解决方案 前端 第一步 request.js文件路径&#xff1a;src…

2个好用的ftp和ssh工具推介

为什么不用xshell和xftp,是不好用吗&#xff1f;xshell和xftp虽然好用&#xff0c;而且也有免费版&#xff0c;但是&#xff0c;一个方面使用有限制&#xff0c;再就是你看见这个报错的弹窗烦不烦&#xff1f; 一、ssh工具-WindTerm WindTerm[1] 是一个基于 C 开发的开源终端模…

【Go】Go 语言教程--GO条件和循环语句(八)

往期教程&#xff1a; Go 语言教程–介绍&#xff08;一&#xff09;Go 语言教程–语言结构&#xff08;二&#xff09;Go 语言教程–语言结构&#xff08;三&#xff09;Go 语言教程–数据类型&#xff08;四&#xff09;Go 语言教程–语言变量&#xff08;五&#xff09;Go …

红队打靶,红日系列,红日靶场2

文章目录 描述&#xff1a;环境搭建:外网渗透&#xff1a;漏洞利用冰蝎连接&#xff0c;拿到shell 内网渗透转站CSCS插件提权 域渗透与横向移动 描述&#xff1a; 红队实战系列&#xff0c;主要以真实企业环境为实例搭建一系列靶场&#xff0c;通过练习、视频教程、博客三位一…

Kotlin~Command模式

概念 把请求转化为独立的对象 角色介绍 Command: 命令接口ConcreteCommand: 具体命令实现类 UML 代码实现 interface Command {fun execute(vararg arg: String):Int } class Print : Command {override fun execute(vararg arg: String): Int {println("Print:${arg…