让我们不上代码,不上类图。(其实是没安装画类图的软件)试试用纯文字如何描述代码逻辑
分享一种代码逻辑清晰的实现方案:
主类:ThreadPool
内部类:SingleThread
ThreadPool:
成员:
ArrayList<Task> mWaittingList;<span style="white-space:pre"> </span>//等待队列
ArrayList<Task> mExecList;<span style="white-space:pre"> </span>//执行队列
ArrayList<SingleThread> mThreadPool <span style="white-space:pre"> </span>//线程List
方法:
ThreadPool(int poolSize)<span style="white-space:pre"> </span>//构造函数 初始化mThreadPool并全部start
addTask(Task task) <span style="white-space:pre"> </span>//放入任务,并notifyAll线程
SingleThread
方法:
run() //执行方法
while循环查看mWaittingList,如果有任务,则取出放入mExecList,并执行此任务。
如果while 判断mWaittingList为空,进入线程wait
如果wait被notify唤醒,重新执行以上代码
如果想加入cancel 和 stop功能,只要在run中增加标志位判断,然后在ThreadPool中控制这些变量就可以了
没了~~