在日常开发对于前后端交互的问题上,我们一般最常用的是使用一个线程来处理前台需要获取的数据,在处理完数据之后将结果立即返回至前台,但是存在这种场景,如果我们收到一个请求之后,我们需要做一些耗时的操作,比如说对于一件商品下订单的过程中我们可能需要的过程是下订单,发货,出快递单号等等一系列操作,但是在前台看起来我只需要下单只需要给我返回下单的结果和库存数减少即可,其他的复杂操作不需要反馈至前台页面这时我们可以用线程来进行异步操作,来保证前台页面得到及时的响应提高效率。但是在这个时候调用的异步线程是选用线程池还是new一个新的线程呢,我们在做一些实时性不高的操作时可以采用线程池来创建线程进行调度,但是线程池有一个局限性,那么就是他可开辟的线程数有限,那么假如有一个场景是这样的,我要立即返回一个结果至前台页面,但是在对请求处理中可能有一些计算等复杂的操作,这个时候我们若果调用线程池进行处理,这时的线程池假如说所有的线程都在做一些耗时的操作,那么我么现在需要做多线程计算的操作只能在阻塞队列中进行等待,这样就会导致数据不会及时反馈,这时我们可以直接new一个新的线程来对这些进行处理,放置上述问题存在,但是要注意这类操作不能是多用户经常执行的,否则会开辟相当可观的线程数量导致我们的服务花太多时间用于线程的调度上
对于选择单线程执行,采用线程池执行,以及采用直接new一个新线程执行的思考
最新推荐文章于 2022-03-02 18:37:18 发布