学了秒杀后的后遗症。。。。求老师解答

来源:4-7 Redisson分布式锁的应用

燎丶Trance

2020-12-08

->. 既然有秒杀这种场景出现,那是否也和Controlller的线程安全有关系呢,我查询了相关资料,不是最新版本的,说Controller是单例的,会导致线程安全的问题。既然有秒杀这种场景,那我举个极端的例子,我5000个人同时请求修改密码的接口,那会不会也会出现数据读错的现象呢,比如A用户的请求读到的确实B用户的密码?他们说在Controller中定义实例变量也会出现线程安全问题,比如@Autowired注入HttpServletRequest就会出现线程不安全的情况 0 0,很纠结的是没人提到过Controller中的方法参数是否也会出现线程安全问题.

如:
@GetMapping("/test")
public String test(String a, String b) {
// 会不会发生 a 是线程1的 b是线程2的情况呢…

}

写回答

2回答

java搬砖

2020-12-08

既然有秒杀这种场景,那我举个极端的例子,我5000个人同时请求修改密码的接口,那会不会也会出现数据读错的现象呢,比如A用户的请求读到的确实B用户的密码?


这种的情况是怎样才能出现呢?当前线程的请求映射到了这个方法上了并且读到了当前请求用户的密码,怎么篡到其他线程里呢?

0
2
燎丶Trance
我知道原因了, 谢谢了
2020-12-08
共2条回复

InCowboy

2020-12-08

这么早就开始刷视频了啊,这个是一个关于Spring的经典面试题,单例的Bean是否安全的问题,其实在Spring中单例Bean是有线程安全问题的,如何解决这个问题:把单例bean做成原型的;利用ThreadLocal解决;不要使用私有的成员变量。但你这个参数跟线程安不安全没关系的

0
1
燎丶Trance
好的 明白了 谢谢老师
2020-12-10
共1条回复

高级Redis进阶课 解决Redis实际问题+掌握Redis6.x特性

以项目整合Redis各种场景,从此轻松应对各类Redis难题

934 学习 · 353 问题

查看课程