第一个场景——拍卖
假设有诸多用户在手机上进行出价,大屏幕显示当前最高价和出价记录,主持人最后点击结束拍卖,进入下一轮。当主持人点击结束的时候,需要把用户的出价记录保存到数据库里头去,可能是几条出价记录,也可能是上千条的出价记录。此时我们需要产生几十到几千条insert语句,可想而知如果我们等几千条insert语句执行完毕再返回类似“结束成功,可以进入下一轮拍卖”的数据是需要一定的时间的。此时我们就可以开启一个线程去执行insert操作。而我们的主线程则直接返回”成功“的信息。这样就成功的减少了请求返回的时间。这里说的是理想状态,排除插入数据的线程执行过程中失败的因素。如果要处理,可以加入缓存。数据存入缓存后视为成功并作出请求响应,当插入数据线程成功执行后清理缓存。如果失败,则通过定时器或手动执行补偿。
第二个场景——数据分析
现在我们需要从A服务器去拿到几千、几万、几十万甚至上亿的数据,假设需要花费5秒钟。然后从B服务器也去拿这么多的数据,假设也需要花费5秒钟。然后两个数据结合起来进行数据分析。如果不采用多线程,我们可能需要先从A服务器获取数据,五秒以后才能从B获取数据,这里总共花费了十秒钟的时间去获取数据。那么如果采用多线程,我们可以创建两个线程,分别去拿A和B的数据,这样只需要花费5秒钟的时间。从而提高了数据处理的速度。
除了列举的两个场景以外,还有很多场景都可以使用到多线程。在工作中可以慢慢体会!
(完)