线程池示例代码,请大家多指教
包结构
src
test
TestThreadPool 测试类
thread
ThreadPool 线程池类
WorkThread 工作线程类
TaskMonitorThread 任务监测线程类
TaskTimeOutThread 任务超时监测线程类
task
TaskManager 任务管理器
WorkTask 任务接口
WorkTaskImp 正常任务类
WorkTaskAImp 异常任务类
WorkTaskBImp 超时任务类
event
AbstractEvent 任务事件类
BeginTaskEvent 任务执行开始事件类
EndTaskEvent 任务执行结束事件类
TaskRunTime 任务运行时间类
TaskTimeOutEvent 任务执行超时事件类
源代码
import java.util.*;public class ThreadPool {private LinkedList<Runnable> taskList = null;private boolean closed = false;public ThreadPool() {this.taskList = new LinkedList<Runnable>();for (int i = 0; i < 4; i++) {Thread work = new WorkThread();work.setDaemon(true);work.start();}}public synchronized void addTask(Runnable task) {if (closed)return;if (null == task)return;this.taskList.add(task);notify();}private synchronized Runnable getTask() {while (this.taskList.size() == 0) {try {if (closed)return null;wait();} catch (InterruptedException e) {e.printStackTrace();}}return this.taskList.removeFirst();}public void close() {synchronized (this) {this.closed = true;}}private class WorkThread extends Thread {public void run() {while (true) {Runnable task = null;task = getTask();if (null == task)return;task.run();}}}}