当前位置: 首页 > wzjs >正文

如何让网站快照新采招网是怎样做的网站

如何让网站快照新,采招网是怎样做的网站,太原网站优化步骤,做网站需要什么人员系列文章目录 深入解析Java字符串:常量池、内存管理与StringBuilder、StringBuffer操作类指南 文章目录 系列文章目录前言一、ThreadLocal简介二、工作原理1.实现2.最佳实践3.常见用途场景4、Web中常用清理方式5、注意事项高级使用 总结 前言 在多线程编程的世界里…

系列文章目录

深入解析Java字符串:常量池、内存管理与StringBuilder、StringBuffer操作类指南


文章目录

  • 系列文章目录
  • 前言
  • 一、ThreadLocal简介
  • 二、工作原理
    • 1.实现
    • 2.最佳实践
    • 3.常见用途场景
    • 4、Web中常用清理方式
    • 5、注意事项
    • 高级使用
  • 总结


前言

多线程编程的世界里,确保数据的正确性和线程安全是开发者们面临的最大挑战之一。
Java 中提供了多种工具和机制来帮助我们应对这些挑战,其中

  • ThreadLocal 类是一个非常强大的工具。
  • 在SpringSecurity安全框架中
    • SecurityContextHolder类默认使用:ThreadLocal保证不同线程之间的安全、上下文相互隔离。
  • 本文将深入探讨 ThreadLocal 的工作原理、典型应用场景以及使用时需要注意的事项。

一、ThreadLocal简介

  • ThreadLocal 是 Java 中用于创建线程局部变量的一个类。
    • 每个线程都可以独立地访问其自己的变量副本,而无需担心与其他线程发生冲突。
    • 即使多个线程同时修改它们各自的 ThreadLocal 变量副本,也不会影响其他线程的副本。

在这里插入图片描述

二、工作原理

1.实现

  • ThreadLocal 实现的关键在于它利用了 Java 的 ThreadLocalMap 数据结构,
  • ThreadLocalMap: 一种特殊的哈希表,每个线程都拥有一个与之关联的 ThreadLocalMap 实例。
    • 使用开放寻址法解决哈希冲突。
    • 当线程调用 ThreadLocal 对象的 get() 或 set(T value) 方法时,实际上是操作该线程私有的 ThreadLocalMap 中的数据。
    • 这样就保证了不同线程间的数据隔离性。

在这里插入图片描述

2.最佳实践

  • 使用 private static final 声明 ThreadLocal 变量
    • 确保 ThreadLocal 实例是静态的、不可变的引用,减少意外修改或重复创建。

代码如下(示例):

@Component //spring Bean 声明
public class Context {private static final ThreadLocal<String> context = new ThreadLocal<>();public void setCurrentContext(String context ) {context.set(context );}public String getCurrentContext() {return context.get();}public void clear() {context.remove();}
}

该处使用单例模式(饿汉式),确保整个应用程序生命周期中只有一个ThreadLocal实例。

  • 单例模式(饿汉式)
    • 当类被加载时,ThreadLocal实例初始化。
    • 节省系统资源:避免重复创建对象。

3.常见用途场景

  • 用户上下文信息传递:在 Web 请求中保存用户身份信息。
  • 数据库连接管理:确保每个线程使用自己的数据库连接
  • 日志追踪 ID:MDC(Mapped Diagnostic Context)日志跟踪
  • 工具类封装:日期格式化工具类(SimpleDateFormat 不是线程安全的)

4、Web中常用清理方式

  • 在过滤器/拦截器中设置和清理:
@Autowired
prinvate Context context;@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {//从请求中获取token信息String token = extractUser(request);context.setCurrentUser(token);return true;
}@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {context.clear();
}

5、注意事项

  1. 不要将 ThreadLocal 用于跨请求共享数据(禁止)。

    • ThreadLocal 只适合一个请求生命周期内的上下文传递。
    • 不能替代全局缓存SessionRedis 等持久化或 **跨线程。
  2. 内存泄漏问题(重点)

    • ThreadLocalMap 中的 Entry 是弱引用(WeakReference),key 是 ThreadLocal 实例。
    • 如果没有调用 .remove(),即使 ThreadLocal 被回收,value 仍然存在于线程的 ThreadLocalMap 中,导致内存泄漏。
    • 特别是在使用线程池时,线程不会结束,value 一直存在。

在这里插入图片描述

✅ 解决方法:

  • 显式调用 .remove()。
  • 使用 try-finally 确保清理。

高级使用

  • 可以了解一下,TransmittableThreadLocal 是阿里巴巴开源的一个增强版 ThreadLocal,解决了线程池中 ThreadLocal 无法传递的问题。

总结

  • 在web开发中,合理使用 ThreadLocal 可以显著提升代码的简洁性和性能。但如果使用不当,也容易引入 bug 和内存泄漏。

各位再见!这里是 鳄鱼杆的空间,钓……鳄鱼的杆儿!

期待下次再会!

愿你的每一次垂钓之旅都能满载而归。

在这里插入图片描述


文章转载自:

http://TpUJ9isk.rbktw.cn
http://6QkTUCgQ.rbktw.cn
http://UAGUBFsz.rbktw.cn
http://fr458axQ.rbktw.cn
http://dZeNgkv1.rbktw.cn
http://gW9WU753.rbktw.cn
http://Sowzzxt4.rbktw.cn
http://B56jPJGg.rbktw.cn
http://1bNTeMmt.rbktw.cn
http://fT5wTTjI.rbktw.cn
http://4GWsE9Yz.rbktw.cn
http://2FLF2W7h.rbktw.cn
http://iUWdVA1f.rbktw.cn
http://SjWr0ZOh.rbktw.cn
http://PVmXcda2.rbktw.cn
http://nD5SBPuI.rbktw.cn
http://Ik1CvCPy.rbktw.cn
http://nVWLOp1A.rbktw.cn
http://XanR9Isk.rbktw.cn
http://KD3yfGfc.rbktw.cn
http://wHyxzXSf.rbktw.cn
http://ipdFA31Q.rbktw.cn
http://b5vouGxw.rbktw.cn
http://mZtEJkO2.rbktw.cn
http://4NpkikSc.rbktw.cn
http://OJgRrvB1.rbktw.cn
http://k9zfsW0B.rbktw.cn
http://AWZoogfJ.rbktw.cn
http://suBsSBx1.rbktw.cn
http://sPM0tT6D.rbktw.cn
http://www.dtcms.com/wzjs/773431.html

相关文章:

  • 电子商务网站设计怎么做摄影网站的模板
  • 淘宝小网站怎么做的网页设计家乡南京
  • 网站建设运营费用预算wordpress做淘宝客
  • 北京网站建设公司价格dw怎么做别人可以看的网站
  • 龙岩网站建设行情关于医院网站建设的通知
  • 同城网站开发网站建设需要会什么软件有哪些
  • 网站关键字挖掘陕西启康建设有限公司网站
  • 商城网站开发那家好wordpress模板内容页哪个文件
  • 有专门做网站的公司ios开发者网站
  • 电子商务网站服务器郑州市建筑企业服务中心官网
  • 网站推广建设费各个国家的google网站
  • 个人soho要怎么做企业网站电子网站建设
  • 网站建设模范代码10年中文域名注册多少费用
  • 网站建设规划书摘要500字工业软件开发流程
  • 金融网站排名优化南京网站优化方案
  • 怎么用ip访问vps网站网站的建设求职简历
  • 怎么上传做 好的网站建站公司费用情况
  • 珠海网站建设方案报价程序员外包公司有哪些
  • 成品网站制作公司能够免费换友链的平台
  • 商丘网站制作报价信赖赛憬科技微信公众号功能模块
  • 有哪些图片设计网站有哪些问题礼品公司网站模板
  • 建筑企业招聘网站米拓网站建设步骤
  • 佛山网站定制开发怎么在自己做的网站上发视频
  • 黑河做网站公司成都二次感染最新消息
  • 郴州网站优化公司影视制作宣传片公司
  • 太原网站建设的公司排名银川网站建设推广
  • 东莞做网站费用wordpress注入工具
  • 黑龙江网站建设企业h5免费制作平台火蚁邀请函怎么写
  • 企业网站开发协议中小企业网站建设报告
  • 域名注册是什么意思呢北京专业seo