请稍等 ...
×

采纳答案成功!

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

ThreadLocal相关问题

老师请教下,7-5中"/save"请求
1,针对另一个问题的回答
”不会,一般会有个线程池,比如固定200个线程在处理请求,同一个线程,后进来的请求会把前一个请求的member覆盖掉,也就是说最多有200个member”
当后来的请求把前一个请求的member覆盖掉后,前一个用户是不是就算退出登录状态了,需要重新登录?那系统能同时在线的用户不是只有200个了吗?
2,请问在实际场景中,比如高并发情况下,这样使用threadLocal会遇到内存泄漏的情况吗
3,看到7.8课程中,“/query-list”请求也调用了“LoginMemberContext.getId()”,请问是指登录的用户不主动退出,且线程池中线程充足,就不会释放线程资源,并持续保存threadLocal中的值吗?这样只要用户保证登录状态,不同的请求都可以只用threadLocal中保存的id值。然后当线程池满了之后,后来的请求把前一个member覆盖了,前面的用户只能重新登录。如果一段时间内涌入的客户较大,前一个用户的token还没过期,就被后面一个用户顶替掉了,threadLocal中的值失效,会不会出问题呢

正在回答

3回答

  1. 这里存的会员不是用于校验是否登录的,只是为了在处理一次请求期间,方便各代码段获取会员信息。至于登录信息是放在JWT里解密出来的。 

  2. 在实际项目中我们也用过ThreadLocal,每日超百万的有效订单,没有遇到问题

  3. 参考问题1,ThreadLocal只是方便取会员信息,不是用于校验。只是在校验完后,顺便往ThreadLocal里放入会员信息

1 回复 有任何疑惑可以回复我~
提问者 weixin_慕粉4436965 2024-04-30 11:14:28

问题3已经明白了,“/query-list”请求在到controller前,要先经过拦截器,然后被拦截器提取出新的token和memberId存储到新线程的threadLocal中了,和"/save"请求不是一个线程了

0 回复 有任何疑惑可以回复我~
额5226507 2024-04-29 20:14:11

通常不是一个请求对应一个线程吗,处理完一个请求就还回去,线程之间是独立的(我觉得的,不一定对哈)

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信