线程池vs多线程

本文探讨了多线程处理方式与线程池技术的区别。多线程每次请求都会创建新线程,造成资源浪费;而线程池通过预创建线程并复用,减少了线程创建和销毁的开销,提高了处理效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       做过一个基于线程池的http服务器,面试时老师经常会问到线程池跟多线程有什么好处,所以在这里总结一下:

      

        当浏览器传送一个请求到达服务器后,如果是多线程,服务端会临时性的创建一个新的进程,来处理相应的客户端的请求,当一个线程处理完相应的客户端任务后,线程也就结束了自己的生命周期,不能再一次被启用。另外在java中,如果每当一个请求到达就会创建一个新的进程,开销是很大的。

       在实际应用中,系统在创建和销毁线程所花的时间,有时候甚至比处理这个请求所花的时间更多,不光是创建和销毁,线程活动所花费的时间也是很多的。在jvm里创建太多的线程,则可能会使系统过渡消耗而系统出现资源不足的情况。

       为了防止资源不足的情况,服务器程序应该想办法来限制给定时间内处理任务的数量,从而来减少线程创建和销毁的数目,尤其是那些比较大的对象,尽可能利用已有的对象进行服务。

       线程池技术主要来解决系统资源不足的情况。首先,重用一个线程可以将线程的创建和开销都分摊给多个任务。其次,由于线程已经存在,可以消除线程创建带来的延迟,这样系统就可以立即为请求服务。另外通过调整线程池中线程的数量,可以防止出现资源不足的情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值