昨天找到一套多线程任务调度的代码,相当的不错,先把思路总结一下。
首先需要有一个任务管理器来管理所有的任务,任务管理器提供添加新任务的接口。
然后需要有一个线程池管理器管理所有的线程,线程分三种状态:创建、运行、空闲三种状态,线程可以执行任务Task。
主流程通过一个TaskMonitorThread 的任务调度线程来调度任务,方法就是每次从任务队列中获取一个任务,然后再从线程池中取一个线程来执行。
另外还有一个TaskTimeOutThread 的任务超时监控线程来监控任务是否超时,这个需要一个存储运行时间的类来支撑。
一个线程在开始执行时会触发开始运行的事件,在结束时会触发运行结束的事件,这些事件会将线程重新调整为空闲状态,扔回线程池。