采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
你好,老师,请问一个问题, 我在面试中说到使用redis分布式锁处理并发秒杀问题,避免商品超卖。redis是单线程的,面试官 说那还是用的是单线程处理问题,他说这样会慢, 请问 多线程的并发的时候,为了线程安全,我们采用的那么多类和方法处理,避免了并发问题,这就意味着慢吗?意味着其他线程在排队等待执行任务吗?那位什么同比synchronized 我们用了一些并发处理手段,例如redis的锁,会快很多呢?
你好,这里其实有好几个问题首先秒杀是一个特殊的场景,避免超卖不一定要靠分布式锁,而且秒杀通常流量特别大,对资源争夺也特别强,因此使用分布式锁确实很慢很多,尽量设计成无锁的形式。其次,并发其实是为了加速,但是并发存在潜在的线程安全问题,但线程安全不代表一定要加锁或者一定会慢,比如利用threadlocal线程封闭来保证线程安全。然后,如果加锁,是肯定会带来一定的消耗的,但是线程安全是不得不解决的,因此可以考虑尽量避免资源竞争,在设计上采用以最小的代价解决线程安全问题即可。
非常感谢老师的答复,不仅解答了问题,还教我处理并发的思路
登录后可查看更多问答,登录/注册
构建完整并发与高并发知识体系,倍增高薪面试成功率!
1.7k 1
1.1k 18
1.2k 15
3.6k 12
1.3k 12