为什么要使用线程池?

像Web服务器、数据库服务器、文件服务器或邮件服务器之类的许多服务器应用程序都面向处理来自某些远程来源的大量短小任务。以某种方式请求到达服务器,这种方式可能是通过网络协议(例如 HTTP、FTP )、通过 JMS 队列或者可能通过轮询数据库。无论请求如何到达,服务器应用程序中经常出现的情况是:单个任务处理的时间很短而请求的数量却是巨大的。到达请求就创建一个新线程,但是在新线程中为请求服务,中断的创建线程,想想线程所带来的系统开销其实是非常大的。

线程池为线程生命周期前沿问题和资源不足问题提供了解决方案

通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。其好处是,因为在请求到达时线程已经存在,所以创建无意中也消除了线程所带来的延迟。这样,就可以立即为请求服务,使应用程序响应更快。而且,通过适当地调整线程池中的线程数量,或者当请求的数量超过某个阈值时,就强制任何新到达的请求一直等待,直到获得一个线程来进行状况处理,从而可以防止资源短缺。

风险与机遇

使用线程池构建的应用程序很容易遭受任何其他多线程应用程序的所有并发风险,例如同步错误和死锁,它也很容易遭受特定于线程池的少数其他风险,例如与有关的死锁、资源不足和线路中断。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值