为了避免并发线程问题,我们的处理使其线程安全,意味着 都是单线程排队执行吗?
来源:11-5 缓存-高并发场景问题讲解
![](http://img1.sycdn.imooc.com/user/5333a2320001acdd02000200-100-100.jpg)
慕少7414720
2019-06-27
你好,老师,请问一个问题,
我在面试中说到使用redis分布式锁处理并发秒杀问题,避免商品超卖。redis是单线程的,面试官 说那还是用的是单线程处理问题,他说这样会慢,
请问 多线程的并发的时候,为了线程安全,我们采用的那么多类和方法处理,避免了并发问题,这就意味着慢吗?意味着其他线程在排队等待执行任务吗?那位什么同比synchronized 我们用了一些并发处理手段,例如redis的锁,会快很多呢?
写回答
1回答
-
你好,这里其实有好几个问题
首先秒杀是一个特殊的场景,避免超卖不一定要靠分布式锁,而且秒杀通常流量特别大,对资源争夺也特别强,因此使用分布式锁确实很慢很多,尽量设计成无锁的形式。
其次,并发其实是为了加速,但是并发存在潜在的线程安全问题,但线程安全不代表一定要加锁或者一定会慢,比如利用threadlocal线程封闭来保证线程安全。
然后,如果加锁,是肯定会带来一定的消耗的,但是线程安全是不得不解决的,因此可以考虑尽量避免资源竞争,在设计上采用以最小的代价解决线程安全问题即可。012019-06-28
相似问题