高并发会引起多线程问题吗?

我有一个抢红包方法,里面包含两个操作,一个是redis对红包数量减一,还有一个是redis对红包金额减去一个随机数,老师说抢红包会出现高并发场景,需要将减红包数和减金额数两步做成原子操作,用lua脚本实现,为什么?高并发又不是多线程,一个方法不应该是从上到下依次执行吗?高并发会引起多线程问题吗?

2个回答

并发本身就是多线程 你说的多线程问题应该是线程安全问题
一个方法确实是从上到下下依次执行 要保证抢红包这个业务场景正确执行 就要考虑并发可能引起数据一致性问题
若是不将减红包数和减金额数两步做成原子操作 有多个个线程同时执行时必然会出现红包金额和红包个数超额
1、要么保证这个方法每次只有一个线程执行

2、并发执行时要保证数据的一致性

高并发只是增加了并行操作的可能性而已;
但是:
1.你不能保证你得方法是被同一个线程调用
2.你不能保证你的应用只部署一台机器
3.如果抢红包这个不用多线程,用户量一多,你的系统就挂了

希望可以帮到你吧...

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐