目录
一、ThreadManager
作用:线程池管理类,用线程工厂创建线程
特点:不会创建线程或销毁线程,而是保存空闲线程数变量、活跃线程数变量;
维护一个任务(task)队列,并平衡服务的响应与等待时间,通知线程池策略对象(PoolPolicy object )相关的信息,由PoolPolicy object 决定池大小调整,这样的好处是可以将策略解耦出来。
二、三个Monitor
(1) monitor_
用来协调task执行的快,加入的慢的情况,当一个worker执行完一个task,就会从tasks里重新获取一个,如果获取不到,就阻塞;当新的task加入到tasks或者worker被清理时,monitor_再被唤醒。
(2) workerMonitor_
每个worker运行完task后会被加入到deadWorkers_里面,addWorker和removeWorker都不会改变workCount_,只会改变workMaxCount_,只有当run的时候才会改变manager_的workerCount_,同步就由workerMonitor_负责。
(3) maxMonitor_
用来监控等待的task数目,当manager_调用add添加task时,如果已经超过了最大值,就会等待,等到调用worker的run方法,从任务队列中取出task后,任务队列长度小于最大值时,再去唤醒。