`
sharp-fcc
  • 浏览: 106168 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

线程池vs多线程

阅读更多

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

      

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

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

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

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics