请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于使用线程本地变量的理解

我的理解是:
我们有一个从数据库中查询会员数据的接口,在最开始的场景中,我们每次都是调用这个接口来获取会员数据。
再加入会员本地变量之后,我们就在查询会员数据的接口中加入下面这个逻辑:
会员数据查询接口:

  1. 如果线程本地变量有当前会员的数据:直接返回本地变量中的会员数据
  2. 如果没有:去数据库中查,然后加入到线程本地变量然后返回

不知道我的理解对不对。
如果是这样的话我有一个疑惑,那就是线程本地变量中的会员信息该再什么时候清楚。不然随着请求的增多线程本地变量会越来越臃肿

正在回答 回答被采纳积分+3

2回答

weixin_幕布斯3232400 2023-09-06 21:53:00

线程本地变量是线程私有,所以一般一个线程本地变量里面只存储了当前线程的会员信息

0 回复 有任何疑惑可以回复我~
甲蛙 2023-07-10 20:00:44

你这个想法应该是缓存的用法,线程本地变量只在当前线程(一次请求)有效,一般是在前置通知里放入,在后置通知里移除,不移除也没有关系,同一个线程在被多个请求反复使用时,线程本地变量会一直覆盖前面的,一个线程始终只有一个。

如果你的用户信息是要反复使用,多个请求都用同一个用户,应该是使用缓存。

0 回复 有任何疑惑可以回复我~
  • 提问者 weixin_慕娘1305685 #1
    前置通知和后置通知是preHandle和postHandle对把。
    那就是在请求到来时在preHandle 里面把用户信息存入本地变量
    然后再postHandle里面把本地变量清空
    在接口中所有调用用户信息地接口都改为直接从本地变量中获取。
    是这样么
    回复 有任何疑惑可以回复我~ 2023-07-10 20:22:41
  • 甲蛙 回复 提问者 weixin_慕娘1305685 #2
    是的,我们项目里目前就是这么做的,只是少了最后的清空线程本地变量
    回复 有任何疑惑可以回复我~ 2023-07-12 09:22:16
  • HenceForward 回复 甲蛙 #3
    回复 甲蛙:有个疑问,为什么要用线程本地变量,直接方法调用的末尾清楚缓存不就行了吗?
    回复 有任何疑惑可以回复我~ 2024-09-06 16:49:08
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信