学了秒杀后的后遗症。。。。求老师解答
来源: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回答
-
既然有秒杀这种场景,那我举个极端的例子,我5000个人同时请求修改密码的接口,那会不会也会出现数据读错的现象呢,比如A用户的请求读到的确实B用户的密码?
这种的情况是怎样才能出现呢?当前线程的请求映射到了这个方法上了并且读到了当前请求用户的密码,怎么篡到其他线程里呢?
022020-12-08 -
InCowboy
2020-12-08
这么早就开始刷视频了啊,这个是一个关于Spring的经典面试题,单例的Bean是否安全的问题,其实在Spring中单例Bean是有线程安全问题的,如何解决这个问题:把单例bean做成原型的;利用ThreadLocal解决;不要使用私有的成员变量。但你这个参数跟线程安不安全没关系的
012020-12-10
相似问题
关于把秒杀活动放入redis的疑问
回答 1
关于统计连续签到次数的疑问
回答 1