什么是ThreadLocal?(一句话说明白)

本文介绍了Java的ThreadLocal类,作为线程内的局部变量,用于解决多线程中的并发问题。作者探讨了ThreadLocal的使用场景,如用户信息存储、线程安全变量配合、MyBatis分页插件中的应用等,强调其在线程安全和数据传递中的重要作用。
摘要由CSDN通过智能技术生成

2024一起卷吧

见者有缘,缘来好运🍀诚邀各位围观我的博客【CS_GUIDER】👇
🧑‍💻个人主页: wl2o2o
✒️博客主页: CSGUIDER(好玩) CSGUIDER(实用)
⭐八股专栏: JavaU8G(内置MusicPlayer)

我的开源博客涵盖了八股文、设计模式、网站搭建、数据库、Linux系统的教程和笔记。我致力于为您提供Java编程的实用指南和资源,包括Java框架、JVM、微服务以及Git。无论您是初学者还是经验丰富的开发人员,都可以从中获益。谢谢您的光临!

什么是ThreadLocal?

维基百科

ThreadLocal 介绍

我的理解

ThreadLocaljava.lang下面的一个类,是用来解决多线程中的并发问题。实际上它就是一个线程内的一个局部变量。比如可以存放一些线程安全的相关变量,用于线程内共享,线程之间互斥。这样其他线程进行访问,发现与变量中存放的信息不一致,于是就达到了解决并发的问题。

ThreadLocal中的四个方法:

  • initValue
  • get
  • set
  • remove

应用场景

  1. 用户信息存储

    在项目中的大多时候,都需要对用户进行鉴权,此时,我们可以将用户的信息放在ThreadLocal中,有需要时取,很方便!

  2. 线程安全

    由于ThreadLocal的隔离特性,加上一些并发安全处理的变量并不是线程安全的,所以,我们可以把这些变量配合它进行使用,这样就达到了线程安全的目的。
    例如:SimpleDataFormat变量。

  3. PageHelper分页

    这个是MyBatis提供的分页插件。我们在代码中设置的分页参数、页码、页大小的信息都会存储于ThreadLocal中,方便执行分页对其进行读取。

  4. 日志上下文存储

  5. traceid存储

  6. 数据库Session

总结

主要就是两个作用:

  1. 线程安全
  2. 进程内读取、传递信息
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CS_GUIDER

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值