JUC之ThreadLocal

文章目录

  • 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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

初始网络原理

目录 网络发展史 独立模式 网络互连 局域网LAN 广域网WAN 网络通信基础 IP地址 端口号 认识协议 五元组 协议分层 OSI七层模型 TCP/IP五层&#xff08;或四层&#xff09; 网络设备所在分层 封装和分用 网络发展史 独立模式 独立模式&#xff1a;计算机之间相互…

【技能实训】Day01

文章目录 任务1 项目准备一、开发环境二、系统简介三、项目创建 任务2【任务2.1】菜单项设计及其测试【任务2.2】使用数组存储采集的数据【任务2.3】控制显示采集的数据 任务1 项目准备 一、开发环境 1.JDK8下载及其环境变量配置(JDK8以上版本) 2.IDE &#xff1a;Eclipse 或…

应用层:万维网WWW

1.万维网WWW 笔记来源&#xff1a; 湖科大教书匠&#xff1a;应用层概述 湖科大教书匠&#xff1a;万维网WWW 声明&#xff1a;该学习笔记来自湖科大教书匠&#xff0c;笔记仅做学习参考 浏览器最重要的部分是渲染引擎&#xff0c;也就是浏览器内核。负责对网页内容进行解析和…

postgresql 数据库 索引 介绍

postgresql 数据库 索引 介绍 文章目录 postgresql 数据库 索引 介绍前言一 什么是索引&#xff1f;二 简介三 索引的种类B-treeHash索引GiST索引GIN 索引BRIN 索引SP-GiST索引 CREATE INDEX1.大纲2.描述3. 参数UNIQUECONCURRENTLYIF NOT EXISTSINCLUDEnameONLYmethodcolumn_na…

Vue3:在 VSCode 中如何成功安装 Mockjs 及成功引入 Mock 的详细过程

Ⅰ、Mock 简介&#xff1a; 1、什么是 Mock&#xff1f; 其一、Mock 的解释一&#xff1a; Mock 服务是指在测试过程中对于某些复杂&#xff08;或者不太好构造&#xff09;的对象&#xff0c;用一个虚拟的对象替代它&#xff1b;对于前端来说&#xff0c;就是后台数据还没有…

RS485或RS232转ETHERCAT连接安川ethercat总线伺服

最近&#xff0c;生产管理设备中经常会遇到两种协议不相同的情况&#xff0c;这严重阻碍了设备之间的通讯&#xff0c;串口设备的数据不能直接传输给ETHERCAT。这可怎么办呢&#xff1f; 别担心&#xff0c;远创智控YC-ECT-RS485/232来了&#xff01;这是一款自主研发的ETHER…

数据结构第一章 绪论——走进数据的世界

名人说&#xff1a;唯一可以确定的是&#xff0c;明天会使我们所有人大吃一惊。——阿尔文托夫勒 本篇笔记整理&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; ✔ 课件资料及视频课程学习&#xff1a;王道 数据结构&#xff08…

Linux 网络延迟排查方法详解

概要 在 Linux 服务器中&#xff0c;可以通过内核调优、DPDK 以及 XDP 等多种方式提高服务器的抗攻击能力&#xff0c;降低 DDoS 对正常服务的影响。在应用程序中&#xff0c;可以使用各级缓存、WAF、CDN 等来缓解 DDoS 对应用程序的影响。 但是需要注意的是&#xff0c;如果 …

Lingo优化软件初步

一、Lingo软件介绍 1、lingo软件的简单介绍 美国芝加哥大学的Linus Schrage教授于1980年左右开发的专门用于求解最优化问题的软件包&#xff0c;后经多年完善与扩充&#xff0c;并成立了LINDO系统公司进行商业运作取得巨大成功。根据 LINDO公司主页&#xff08;http://www.li…

六、HAL_Timer的PWM功能

1、开发环境 (1)Keil MDK: V5.38.0.0 (2)STM32CubeMX: V6.8.1 (3)MCU: STM32F407XGT6 2、PWM简介 2.1、什么是PWM (1)PWM是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用&#xff0c;方波的占空比被调制用来对一个具体模拟信号的电平进行编码。 (2)P…

蓝奥声开发高性价比智能wifi插座进军智能家居

关键词&#xff1a;智能家居、家用插座、WiFi插座、高性价比插座 智能硬件的大潮袭来让智能家居这一并不新鲜的概念再次火热起来&#xff0c;关于智能家居的各种场景的描述给了我们很大的想象空间&#xff0c;然而落到实处真正开始走进生活时却又显得那么骨感&#xff0c;一时间…

(30)精准降落和悬停(IRLock)

文章目录 30.1 概述 30.2 哪里可以买到 30.3 连接到自动驾驶仪 30.4 安装到框架上 30.5 通过任务规划器进行设置 30.6 飞行和测试 30.1 概述 Copter 支持使用 IR-LOCK 传感器(IR-LOCK sensor)和声纳或激光雷达(sonar or lidar)进行精确着陆。使用该系统&#xff0c;当飞行…

基于深度学习的目标检测的介绍(Introduction to object detection with deep learning)

物体检测的应用已经深入到我们的日常生活中&#xff0c;包括安全、自动车辆系统等。对象检测模型输入视觉效果(图像或视频)&#xff0c;并在每个相应对象周围输出带有标记的版本。这说起来容易做起来难&#xff0c;因为目标检测模型需要考虑复杂的算法和数据集&#xff0c;这些…

内存的五大分区

一些套话 一个由C/C编译的程序占用的内存分为以下几个部分&#xff1a;栈区&#xff0c;堆区&#xff0c;全局区&#xff08;静态区&#xff09;&#xff0c;文字常量区&#xff0c;代码区 在执行一个C/C 程序时&#xff0c;此程序拥有唯一的“内存四区”&#xff08;栈区&…

00-C++-ccache使用

ccache使用 前言ccache是什么ccache使用 前言 在编译大型C项目代码时编译时间比较长&#xff0c;那么可以使用ccache来加速代码的编译&#xff0c;一起来学习吧。 ccache是什么 ccache是一个编译器缓存。它通过缓存以前编译的结果并检测何时再次进行相同的编译来加快重新编译…

聊聊不同集群的微服务如何通过feign调用

前言 之前业务部门的某项目微服务调用关系如下图 后因业务改造需要&#xff0c;该项目需要将服务A部署到另外一个集群&#xff0c;但服务A仍然需要能调用到服务B&#xff0c;调用关系如下图 之前调用方式是负责服务B的开发团队提供相应的feign客户端包给到服务A开发团队&…

k8s 第一篇 基础知识

一 k8s 1.1 概念 k8s 是一个能让应用部署到容器中&#xff0c;实现自动部署和管理更加高效 自能化的平台。 也就是说通过k8s&#xff0c;能够进行应用的自动化部署和扩容。 1.2 集群的架构流程 1.3 k8s的核心概念 1.4 k8s 集群规划 从第6集开始看

基于OpenCV 实现车牌号码识别--附免费源码

在本教程中,您将学习如何使用 OpenCV 和 EasyOCR 包自动执行车牌/车牌识别 (LPR/NPR)。 EasyOCR是一个开源 Python 包,用于执行光学字符识别 - OCR(从图像中提取文本)。 该软件包非常易于使用,在撰写本文时,它支持 80 多种语言,包括中文、阿拉伯语、法语、英语、西里尔…

MySQL-SQL全部锁详解(上)

​♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a; 小刘主页 ♥️努力不一定有回报&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️学习两年总结出的运维经验&#xff0c;以及思科模拟器全套网络实验教程。专栏&#x…

金山企业版杀毒软件平台“终端安全系统V9”linux客户端不能注册的问题解决方法。

金山企业版杀毒软件平台“终端安全系统V9”&#xff0c;出现部分Linux客户端安装后无法注册到服务器的问题&#xff0c;本文提供了一种问题解决方法。 一、平台版本 平台为金山企业版杀毒软件平台“终端安全系统V9”&#xff1a; 平台端版本为V9.SP2.E1004 客户端安装包&…