线程池与非线程池应用场景及模型对比分析

在网络编程中经常用到线程池和连接池,今天就对其中常用的线程池的基本应用场景和模型做个简单的对比分析。

1、  业务流程对比 

a、  非线程池业务流模型: 

 


上图标识了基本的非线程池的线程模型,前端1有多少连接则前端客户端2与前端服务器端3均需建立一对一的线程数进行响应的连接。前端服务器端3与后端服务器端4也需建立响应数目的线程进行连接处理相关业务。

当一个任务处理完毕后线程退出,在下一个任务到来的时候前端服务器端创建新的线程来处理新的任务。

 

b、线程池模型:


上图标识了基本的线程池模型。前端客户端大量的连接通过服务端的任务接收线程将连接任务放入前端服务器端的任务队列中,前端服务器端起固定数量的处理线程处理前端的任务,当处理线程处理完任务后从任务队列中获取下一个处理任务。保证了前端服务器端和后端服务器端的连接数不会超过前端服务器端的处理任务线程数n,从而保证了后端服务器端的压力。

当处理线程处理完一个任务而任务队列中没有任务的时候线程并不退出,阻塞等待新的任务。

通过上图可以看出,当前端服务器端通过设置合理的处理线程数和任务队列大小,可以有效的屏蔽前端客户端高并发量对后端服务器端的冲击。

 

 

2、  应用场景分析对比

a、  非线程池模型

适用于单次连接任务执行时间较长,并发量不高的情况。一旦并发量很高则线程频繁创建的开销是巨大的。

b、  线程池模型

适用于单次任务执行时间较短,但并发访问量高的情况。当处理线程数设置极大的时候和非线程池模型几乎没有差别

 

3、  优化细节

a、在线程池模型中,可以预创建部分处理线程,随后根据实际的业务需求来创建新的线程,直到创建设置的最大线程数

b、一定时间内关闭一些空闲线程,回收部分资源

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值