设计思路
- 定义抽象任务类:使用模板方法模式,定义一个抽象类作为任务的基类,包含任务执行的模板方法,其中包含开始、核心逻辑、结束步骤,核心逻辑定义为抽象方法由具体任务类实现。
- 线程安全管理:使用
ReentrantLock
来确保任务执行的线程安全,在关键步骤加锁解锁。
- 任务管理:使用线程池来管理多个任务的执行,提高执行效率。
关键代码片段
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.locks.ReentrantLock;
abstract class AbstractTask {
private final ReentrantLock lock = new ReentrantLock();
// 模板方法
public final void executeTask() {
lock.lock();
try {
beforeExecute();
doExecute();
afterExecute();
} finally {
lock.unlock();
}
}
protected void beforeExecute() {
System.out.println("Task is starting.");
}
protected abstract void doExecute();
protected void afterExecute() {
System.out.println("Task is finished.");
}
}
class ConcreteTask extends AbstractTask {
@Override
protected void doExecute() {
System.out.println("Concrete task is executing.");
}
}
public class TaskExecutionFramework {
public static void main(String[] args) {
ExecutorService executorService = Executors.newFixedThreadPool(5);
for (int i = 0; i < 10; i++) {
executorService.submit(new ConcreteTask()::executeTask);
}
executorService.shutdown();
}
}