threadlocal个人理解

  • threadlocal
    • Thread 类中有一个 ThreadLocal.ThreadLocalMap,这个 ThreadLocalMap 是一个特殊的哈希表,专门用于存储 ThreadLocal 变量的值。
    • 每个线程都有自己的ThreadLocal.ThreadLocalMap,因此线程之间ThreadLocal数据是隔离的
    • ThreadLocal跟随线程,因此在不同的处理阶段都可以对其进行增删改查,数据共享。
    • 真正的项目开发中基本上都是从线程池里面获取线程的,所以线程执行完并不会死亡,而是会被线程池复用,所以一定要通过try catch finally 调用ThreadLocal的remove方法清空数据
    • 应用场景
      • 涉及aop的数据存取
        • 典型的是用户登陆数据,在鉴权的时候会set数据,后续全流程共享该数据
      • 涉及到全流程的数据
        • 比如在多层架构中(如 Controller -> Service -> DAO),某些上下文信息(如用户 ID、请求 ID、事务状态等)需要在多个层级之间共享,但又不想通过每个方法调用的参数传递
    • 利弊
      • 优点
        • 解耦
        • 线程隔离
      • 缺点
        • 过度依赖 ThreadLocal 可能会导致代码难以理解和维护,尤其是在大型项目中。通过参数传递数据可以避免滥用全局状态,使代码更具模块化和可测试性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值