黑马点评threadlocal

今天面试,面试官对于threadlocal的使用提问。然后鼠🐭发现不太了解这部分的使用,就说了一个方便以后的使用,面试官不太满意。
1 每次请求都会携带token,直接用redis查询不就可以了吗,为什么还要存到threadlocal
2 用户请求也不一定是一个线程,一个线程过来没有用到另一个线程的信息怎么办#牛客AI配图神器#
全部评论
其实根本原因是TL存储的不是token,而是用户每次请求携带的token解析出来的用户信息,通常是在拦截器中进行解析存储到TL,这样就不存在第二个问题了
52 回复 分享
发布于 03-18 23:49 浙江
jwt最大的优点就是无状态,去中心化存储。存到Redia里就不需要jwt了
11 回复 分享
发布于 03-19 09:32 北京
第一个你是把token放ThreadLocal里了吗。token不会存在ThreadLocal里,因为鉴权token一般每次发送请求的客户端是一样的,但你每一次请求都会分配和上一次请求不一样的线程,你把token存在threadlocal里面就没法验证token了。在一个线程的执行过程里为了不让后面每次拿数据都得访问一次数据库才会鉴权之后把用户信息存在Threadlocal里。 第二个问题没太懂,如果是说Threadlocal数据无法子父线程间共享可以用InheritableThreadLocal或者Transimittablethreadlocal
6 回复 分享
发布于 03-18 18:58 广东
你思考一下openfeign请求为什么丢失就懂了
3 回复 分享
发布于 03-24 20:20 湖南
m
1 回复 分享
发布于 03-22 18:08 福建
m
点赞 回复 分享
发布于 05-15 18:06 湖北
以xx外卖为例谈谈我的浅薄认知:1.是不是一定要有threadlocal:可以没有的 只需要在每个接口的函数后面读一下header的cookie带的jwt 然后解析即可 2.用threadlocal的好处:a.更好的实现流程前后解耦和 让每部分专注于自己的内容 业务就业务 鉴权就鉴权 b.方便流程中前一级的信息向后一级传递 thradlocal里面可以携带任意信息 c.类似全局exception处理 规范 省事
点赞 回复 分享
发布于 04-26 20:37 福建
m
点赞 回复 分享
发布于 04-26 11:37 湖南
threadlocal不是一般存用户解析的信息的吗,前端发送token,后端解析token存到threadlocal,供其他功能使用
点赞 回复 分享
发布于 04-21 23:39 河南
m
点赞 回复 分享
发布于 04-13 21:42 四川
m
点赞 回复 分享
发布于 04-13 11:51 北京
因为token解析同样需要时间,而且redis和jvm通信也需要时间啊,threadlocal是本地的速度更快。
点赞 回复 分享
发布于 04-12 13:37 上海
m
点赞 回复 分享
发布于 04-09 01:24 广东
m
点赞 回复 分享
发布于 04-08 11:07 湖南
mark
点赞 回复 分享
发布于 04-06 17:54 陕西
m
点赞 回复 分享
发布于 04-05 14:58 天津
m
点赞 回复 分享
发布于 04-04 01:30 江苏
m
点赞 回复 分享
发布于 04-01 08:14 湖南
m
点赞 回复 分享
发布于 03-30 23:07 江苏
mark
点赞 回复 分享
发布于 03-29 18:08 江苏

相关推荐

牛客203020960号:项目是好项目,但是建议换别的项目,昨天面试官问:我今天面了10个,怎么有8个都是一人一单和超卖。
点赞 评论 收藏
分享
评论
53
297
分享

创作者周榜

更多
牛客网
牛客企业服务