ThreadLocal如何使用详解

ThreadLocal概述:

ThreadLocal是Java中的一个线程局部变量工具类,它提供了一种在多线程环境下,每个线程都可以独立访问自己的变量副本的机制。ThreadLocal中存储的数据对于每个线程来说都是独立的,互不干扰。

使用场景:
  • 在多线程环境下,需要保持线程安全性的数据访问。

  • 需要在多个方法之间共享数据,但又不希望使用传递参数的方式。

 基本用法:
1,创建ThreadLocal对象:

首先我们使用ThreadLocal对象来存储线程局部变量。可以使用ThreadLocal的默认构造函数创建一个新的实例。

ThreadLocal<String> threadLocal = new ThreadLocal();

 

2,设置线程局部变量:

使用set() 方法可以设置当前线程的局部变量的值。

 threadLocal.set("sde");
3,获取线程局部变量的值:

使用get()方法可以获取当前线程的局部变量的值。

        String s = threadLocal.get();System.out.println(s);

4,清除线程的局部变量的值:

使用remove()方法可以清除当前线程的局部变量的值。

  threadLocal.remove();

完整版:

 

    @Testvoid test(){ThreadLocal<String> threadLocal = new ThreadLocal();threadLocal.set("sde");String s = threadLocal.get();System.out.println(s);threadLocal.remove();}
}
示例代码:

下面是一个简单的示例代码,演示了如何使用ThreadLocal。

public class ThreadLocalTest {private static final ThreadLocal THREAD_LOCAL = new ThreadLocal();public static void main(String[] args) {Thread t1 = new Thread(() ->{THREAD_LOCAL.set("sde666");getData("t1");},"t1");Thread t2 = new Thread(() ->{THREAD_LOCAL.set("sde888");getData("t2");},"t2");t1.start();t2.start();}private static void getData(String threadName){Object data = THREAD_LOCAL.get();System.out.println(threadName+"_"+data);}}

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

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

相关文章

编译ZLMediaKit(win10+msvc2019_x64)

前言 因工作需要&#xff0c;需要ZLMediaKit&#xff0c;为方便抓包分析&#xff0c;最好在windows系统上测试&#xff0c;但使用自己编译的第三方库一直出问题&#xff0c;无法编译通过。本文档记录下win10上的编译过程&#xff0c;供有需要的小伙伴使用 一、需要安装的软件…

快来预约出行!浙江宁海“网约巴士”走出新思路,跑出市民新满意度

在浙江宁海&#xff0c;一辆辆金旅星辰网约巴士亮眼吸睛&#xff0c;正在成为市民出行的全新方式。 它以灵动、萌态十足的小巴士为载体&#xff0c;依托大数据平台及互联网出行创新理念&#xff0c;将传统公交与动态拼车相结合&#xff0c;从而塑造出更灵活、更便宜、更便捷、更…

单片机原理及应用:中断嵌套

​中断嵌套是指中断系统正在执行一个中断服务时&#xff0c;有另一个优先级更高的中断提出中断请求&#xff0c;这时会暂时终止当前正在执行的级别较低的中断源的服务程序&#xff0c;去处理级别更高的中断源&#xff0c;待处理完毕&#xff0c;再返回到被中断了的中断服务程序…

【EI会议征稿通知】2024年第三届生物医学与智能系统国际学术会议(IC-BIS 2024)

2024年第三届生物医学与智能系统国际学术会议&#xff08;IC-BIS 2024&#xff09; 2024 3rd International Conference on Biomedical and Intelligent Systems (IC-BIS 2024) 2024年第三届生物医学与智能系统国际学术会议&#xff08;IC-BIS 2024&#xff09; 将于2024年4月…

Java项目:115SSM宿舍管理系统

博主主页&#xff1a;Java旅途 简介&#xff1a;分享计算机知识、学习路线、系统源码及教程 文末获取源码 一、项目介绍 宿舍管理系统基于SpringSpringMVCMybatis开发&#xff0c;系统主要功能如下&#xff1a; 学生管理班级管理宿舍管理卫生管理维修登记访客管理 二、技术框…

test fuzz-07-模糊测试 libfuzzer

拓展阅读 开源 Auto generate mock data for java test.(便于 Java 测试自动生成对象信息) 开源 Junit performance rely on junit5 and jdk8.(java 性能测试框架。性能测试。压测。测试报告生成。) test fuzz-01-模糊测试&#xff08;Fuzz Testing&#xff09; test fuzz-…

python 工作目录 与 脚本所在目录不一致

工作目录&#xff1a;执行脚本的地方 我以为工作目录会是当前执行脚本的目录位置&#xff0c;但其实不是&#xff0c;例如&#xff1a; 图中红色文件为我执行的脚本文件&#xff0c;但是实际的工作目录是PYTHON LEARNING 可以用如下代码查询当前工作目录&#xff1a; import os…

Spring MVC 的RequestMapping注解

RequestMapping注解 使用说明 作用&#xff1a;用于建立请求URL和处理请求方法之间的对应关系。 出现位置&#xff1a; 类上&#xff1a; 请求 URL的第一级访问目录。此处不写的话&#xff0c;就相当于应用的根目录。写的话需要以/开头。它出现的目的是为了使我们的 URL 可以…

第86讲:MySQLDump与Binlog日志实现企业级数据备份恢复案例

文章目录 1.企业级数据备份恢复案例描述2.第一环节&#xff1a;周三凌晨进行数据全量备份3.第二环节&#xff1a;模拟周三凌晨备份完之后到下午3点前的业务操作4.第三环节&#xff1a;模拟数据库异常数据丢失导致平台无法使用5.第四环节&#xff1a;发布停服公告全员进入数据恢…

Python(32):字符串转换成列表或元组,列表转换成字典小例子

1、python 两个列表转换成字典 字符串转换成列表 列表转换成字典 column "ID,aes,sm4,sm4_a,email,phone,ssn,military,passport,intelssn,intelpassport,intelmilitary,intelganghui,inteltaitonei,credit_card_short,credit_card_long,job,sm4_cbc,sm4_a_cbc" …

文件夹重命名技巧:如何通过重命名解决文件夹名混乱不规律的问题

在日常生活和工作中&#xff0c;我们经常需要管理大量的文件夹&#xff0c;整理文档、图片等其他类型的文件。随着时间的推移&#xff0c;文件夹名可能会变得混乱和不规律&#xff0c;导致查找和管理变得困难。现在一起来看云炫文件管理器如何让文件名变简洁的操作方法吧。 下…

PandoraNext—一个让你呼吸顺畅的ChatGPT

博客地址 PandoraNext—一个让你呼吸顺畅的ChatGPT-雪饼 (xue6ing.cn)https://xue6ing.cn/archives/pandora--yi-ge-rang-ni-hu-xi-shun-chang-de-chatgpt 项目 项目地址 pandora-next/deploy 项目介绍 支持多种登录方式&#xff1a; 账号/密码 Access Token Session To…