草草看完了
Topic sourcevoid processUser(user) { try { threadLocalUser.set(user); step1(); step2(); } finally { threadLocalUser.remove(); }}
step1(); step2();的作用是什么
没啥用,示例代码,就是2个方法。
感觉可以使用redis 实现这个功能,不过网上好像都是2者结合使用
springboot使用redis和ThreadLocal做单点登录_weixin_34124939的博客-CSDN博客
当多个方法同时设置 ThreadLocal 变量时,每个方法设置的值只会影响到当前线程对应的 ThreadLocal 实例,在不同线程中的设置互不影响。每个线程拥有自己的 ThreadLocal 实例,并且每个线程对应的 ThreadLocal 实例都可以存储独立的数值,因此多个方法同时设置 ThreadLocal 变量不会相互影响。
举例来说,如果线程 A 和线程 B 分别调用了不同方法设置了相同名字的 ThreadLocal 变量,这两个线程各自的设置对对方是不可见的,不会相互干扰。线程 A 设置的值只对线程 A 可见,线程 B 设置的值只对线程 B 可见。
然而,在同一个线程中,在不同方法中设置相同名字的 ThreadLocal 变量时,后面设置的值会覆盖前面的值,因为 ThreadLocal 本质上是使用当前线程作为键来存储值,相同的键会覆盖前面的值。因此,需要注意在同一个线程中不同方法之间对 ThreadLocal 变量的使用,避免意外覆盖值导致线程本地的数据混乱。
总结来说,多个方法同时设置 ThreadLocal 变量不会相互影响,但在同一个线程中需要谨慎处理,避免造成数据覆盖的问题。
对么???
这一节,确实不难。。。
难在对陌生名词的恐惧。
- 1
🌙
等后面,回头再细看,
有些东西等阅历上来了 回头再看就简单多了