黑马点评threadlocal

今天面试,面试官对于threadlocal的使用提问。然后鼠🐭发现不太了解这部分的使用,就说了一个方便以后的使用,面试官不太满意。
1 每次请求都会携带token,直接用redis查询不就可以了吗,为什么还要存到threadlocal
2 用户请求也不一定是一个线程,一个线程过来没有用到另一个线程的信息怎么办#牛客AI配图神器#
全部评论
其实根本原因是TL存储的不是token,而是用户每次请求携带的token解析出来的用户信息,通常是在拦截器中进行解析存储到TL,这样就不存在第二个问题了
4 回复 分享
发布于 03-18 23:49 浙江
第一个你是把token放ThreadLocal里了吗。token不会存在ThreadLocal里,因为鉴权token一般每次发送请求的客户端是一样的,但你每一次请求都会分配和上一次请求不一样的线程,你把token存在threadlocal里面就没法验证token了。在一个线程的执行过程里为了不让后面每次拿数据都得访问一次数据库才会鉴权之后把用户信息存在Threadlocal里。 第二个问题没太懂,如果是说Threadlocal数据无法子父线程间共享可以用InheritableThreadLocal或者Transimittablethreadlocal
点赞 回复 分享
发布于 03-18 18:58 广东
jwt最大的优点就是无状态,去中心化存储。存到Redia里就不需要jwt了
点赞 回复 分享
发布于 昨天 09:32 北京
mark
点赞 回复 分享
发布于 今天 11:32 湖北
m
点赞 回复 分享
发布于 今天 12:55 北京

相关推荐

评论
1
21
分享

创作者周榜

更多
牛客网
牛客企业服务