我设计的一个线程池

线程池的设计

目前线程池主要包含下列部分:

1.        busy_list

当前在处理客户请求的线程队列,即正在进行智能网页分析的线程

2.        idle_list

当前线程池中空闲的线程队列

3.        request_list

当用户请求到达后,发现线程池中已经没有可用线程,同时线程的个数已经达到了最大限制数(可设定的),此时只能将此次请求放入请求队列中,等待管理线程申请到可用线程后,再运行该任务

4.        manage_thread

管理线程主要负责每隔一秒后检查是否请求队列中有数据,如果有,检查当前是否有可用线程,如果有,则唤醒该空闲线程进入工作状态。

同时如果每隔十秒钟经检查请求队列中没有数据后,则检查空闲的线程队列是否需要裁剪

 

线程池的自动增长和裁剪规则:

1.        成倍增长线程个数

当用户分派任务到达时,如果发现当前并没有可空闲的线程可以使用,则检测是否可以再创建当前线程总数个数的线程,如果可以,即创建后的线程个数是当前线程个数的两倍

 

2.        单步增长

当用户分派任务到达时,如果发现当前并没有可空闲的线程可以使用,而经检测不可以进行成倍增长,但是此时线程总数还没有达到最大值,则只创建一个线程供当前任务使用

 

3.        线程裁剪

当管理线程发现此次扫描中请求队列中没有数据(每隔十秒钟进行扫描),并且空闲的线程数已超过当前线程的一半,同时满足裁剪后的线程总数不低于线程池的最少线程数,则裁剪掉当前线程池线程总数的1/4

例如: 当前线程池的线程个数为10 最低线程个数为 2 ,假设线程池一直处于空闲状态,线程的裁剪将按如下方式工作

10     2 (初始状态)à  8  2  à 6  2 à  5  2 à  4  2 à 3  2

        最终线程池中有3个线程空闲

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值