请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

多线程开发的应用场景的问题请教

面试问设计一个秒杀的业务?当我看如何设计秒杀的时候,一般会用到redis来代替直接查询数据库的操作,用队列把秒杀和生成订单分离,但是没有涉及到多线程开发的场景?就算有同时多个用户并发改库存的话,只要sql保证改的库存是大于0的,不就不会发生改成负值的情况,其他并发的就只能返回失败就可以了,那么多线程开发的实际应用场景有哪些?

正在回答 回答被采纳积分+3

1回答

Jimin 2018-04-08 23:11:38

你好,先说秒杀,不是你这样简单的两个小操作就能把秒杀做好的,高并发场景下除了要解决超卖问题,还要花很多精力处理系统资源的分配,大量的请求如果不做特殊的处理,可能会打满你的网卡、耗尽服务器的内存,导致无法对外提供服务,请求量突然暴增会带来一系列的问题。这是若鱼老师整理的一点内容,你可以参考一下:https://github.com/xjs1919/miaosha

关于多线程场景,其实我们开发的任何一个接口都属于多线程,任何一个接口可以被多个客户端同时请求,这时,如果多个线程涉及到共享资源的使用时,就需要考虑线程安全的问题,最明显的就是会修改一个类里static修饰的变量。说起多线程,除了我们被迫接受的多线程,还有一种就是我们可以主动发起多线程处理任务,这种场景主要发生在需要完成一件非常耗时的任务,或者要持续不断的干某件任务,这时我们可能就会想到使用线程池及启动多个线程同时进行,既能加快计算时间,也能方便管理。有时也可以让主线程尽早完成,让子线程慢慢处理,这时多线程就属于一个基本优化手段了。关于多线程的理解,我的这篇手记也介绍过:http://www.imooc.com/article/25035,你可以看一下。

祝你学习愉快~


2 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信