单独启动线程与使用线程池的区别

一 概述

在我们的日常开发过程中,我们偶尔会遇到业务层中我们需要同时修改多张表的数据并且需要有序的执行,一般我们都会通过同步的方式,即单线程的方式来执行,可能会存在执行超时的异常,造成请求结果失败,即使成功了,前端也需要等待较长的时间来获取相应结果。

基于上述现象,我们就可以通过线程特性来进行一定的优化。

二 单独启动线程

为每个请求创建一个新线程的开销很大,为每个请求创建新线程的服务器,在创建和销毁线程上花费的时间和消耗的系统资源,要比花在处理实际的用户请求的时间和资源更多。

除了创建和销毁线程的开销之外,活动的线程同样消耗系统的资源。在一个JVM中创建太多的线程可能导致系统由于过度消耗内存而用完内存或是"切换过度"。为了防止资源不足,服务器应用程序需要一些办法限制任何给定时刻处理的请求数目。

线程池为线程声明周期开销问题和资源不足问题提供了解决方案,通过对多个任务重用线程,线程创建的开销被分摊到多个任务上。这样可以在请求到达时线程已经存在,所以无意中消除了线程创建所存在的延时问题,此时,我们就可以立即为请求服务,使应用程序效应更加快速,而且,通过适当地调整线程池中的线程数目,即当请求的数目超过某个阈值的时候,就强制其他任务新到的请求一致等待,直到获得一个线程来处理为止,从而防止资源不足。

待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值