当前位置: 首页 > news >正文

河南郑州做网站h汉狮百度一下你就知道 官网

河南郑州做网站h汉狮,百度一下你就知道 官网,合肥网站建设平台,郑州软件公司排行榜通用批次任务模板 我们总会遇到需要使用批次任务处理问题的场景,任务有很多不同类型的任务,同时这些任务可能都有大致相同,甚至抽象出来共同的执行阶段状态。 任务的执行肯定无法保证一帆风顺,总会在某个时间阶段被打断&#xff…

通用批次任务模板

我们总会遇到需要使用批次任务处理问题的场景,任务有很多不同类型的任务,同时这些任务可能都有大致相同,甚至抽象出来共同的执行阶段状态。
任务的执行肯定无法保证一帆风顺,总会在某个时间阶段被打断,这个时候我们需要设计一个可以断点重续的任务,下面则通过模板模式实现一个这样的通用流程:

任务类-Task

可以通过实现它自定义自己的任务类,对应不同的任务,比如扫地任务、洗碗任务

public interface Task {String getType();TaskStatus getStatus();void setStatus(TaskStatus status);void startExcute();void runExcute();void pauseExcute();void endExcute();
}

任务状态枚举-TaskStatus

public enum TaskStatus {START,RUNNING, PAUSED, COMPLETED,FAILED
}

具体任务

public class ConcreteTask1 implements Task {private String type;private TaskStatus status;public ConcreteTask1(String type, TaskStatus taskStatus) {this.type = type;this.status = taskStatus;}@Overridepublic String getType() {return type;}@Overridepublic TaskStatus getStatus() {return status;}@Overridepublic void setStatus(TaskStatus status) {this.status = status;}public void startExcute() {System.out.println("任务类型:" + type + ",阶段-开始");// 更新任务状态setStatus(TaskStatus.START);runExcute();}public void runExcute() {System.out.println("任务类型:" + type + ",阶段-执行中");// 更新任务状态setStatus(TaskStatus.RUNNING);pauseExcute();}public void pauseExcute() {System.out.println("任务类型:" + type + ",阶段-重启则可继续...");// 更新任务状态setStatus(TaskStatus.PAUSED);endExcute();}public void endExcute() {System.out.println("任务类型:" + type + ",阶段-结束");// 更新任务状态setStatus(TaskStatus.COMPLETED);}
}

任务处理类-TaskProcessor

可以在这里定义任务执行入口,传入你的任务类。
入口方法中可以增加各个阶段状态的判断逻辑,以便梳理执行顺序,是断点重续的关键

public interface TaskProcessor {void process(Task task);
}

通用模板

通用模板定义一些必须的方法,或者流程

public class ConcreteTaskManager extends TaskManagerTemplate {public ConcreteTaskManager(int maxThreads) {super(maxThreads);}@Overrideprotected void handleTaskError(Task task, Exception e) {// 具体处理任务错误的逻辑System.out.println("Error handling for task: " + task.getType());}
}

具体任务模板实现

public abstract class TaskManagerTemplate {private ExecutorService executorService;public TaskManagerTemplate(int maxThreads) {executorService = Executors.newFixedThreadPool(maxThreads);}public void executeTasks(List<Task> tasks, TaskProcessor taskProcessor) {for (Task task : tasks) {executorService.execute(() -> {// 执行通用任务处理流程try {taskProcessor.process(task);task.setStatus(TaskStatus.COMPLETED);} catch (Exception e) {// 处理任务执行异常task.setStatus(TaskStatus.PAUSED);handleTaskError(task, e);}});}shutdown();}public void shutdown() {executorService.shutdown();}// 留给子类实现的处理任务错误的方法protected abstract void handleTaskError(Task task, Exception e);
}

测试类

认真看看

public class TemplateTask {public static void main(String[] args) {// 创建具体任务管理器,指定最大线程数ConcreteTaskManager taskManager = new ConcreteTaskManager(4);// 从数据库加载任务数据List<Task> tasks = loadTasksFromDatabase();// 创建任务处理器TaskProcessor taskProcessor = new TaskProcessor() {@Overridepublic void process(Task task) {// 任务执行逻辑if (task.getStatus() == TaskStatus.START) {task.startExcute();task.setStatus(TaskStatus.START);} else if (task.getStatus() == TaskStatus.RUNNING) {task.runExcute();task.setStatus(TaskStatus.RUNNING);} else if (task.getStatus() == TaskStatus.PAUSED) {task.pauseExcute();task.setStatus(TaskStatus.PAUSED);} else if (task.getStatus() == TaskStatus.COMPLETED) {task.endExcute();task.setStatus(TaskStatus.COMPLETED);} else {System.out.println("执行失败");task.setStatus(TaskStatus.FAILED);}}};// 提交任务到任务管理器taskManager.executeTasks(tasks, taskProcessor);}private static List<Task> loadTasksFromDatabase() {// 从数据库中加载任务数据,包括类型和状态// 返回任务列表// 这里简化为手动创建任务列表List<Task> tasks = new ArrayList<>();tasks.add(new ConcreteTask1("Type1", TaskStatus.START));tasks.add(new ConcreteTask1("Type2", TaskStatus.RUNNING));tasks.add(new ConcreteTask1("Type3", TaskStatus.PAUSED));tasks.add(new ConcreteTask1("Type4", TaskStatus.COMPLETED));// 添加其他任务return tasks;}
}
http://www.hkea.cn/news/164798/

相关文章:

  • 淮安做网站优化百度竞价排名是什么方式
  • 食品公司网站源码谷歌网页
  • 做网站用哪种代码比较好推广seo发贴软件
  • 3d效果图软件宁波seo行者seo09
  • 美国做按摩广告的网站网站优化教程
  • wordpress云建站教程信息流广告公司一级代理
  • 我有一个域名怎么做网站百度一下下载
  • 郑州网站建设品牌好安装百度到桌面
  • 株洲做网站定制百度灰色词优化排名
  • 上海网页设计公司兴田德润电话排名优化外包公司
  • 做360网站优化快推广普通话宣传语手抄报
  • 动态网站开发语言有哪些大学生创新创业大赛
  • 关键词推广公司网站网络排名优化方法
  • 福州移动网站建设网络营销推广工具有哪些
  • win2008sr怎么用iis做网站国外网站加速
  • 合肥++网站建设磐石网站seo
  • 万网主机怎么上传网站如何在百度上投放广告
  • 做网站时如何给文字做超链接全球疫情最新数据消息
  • 四川省住建厅官方网站3分钟搞定网站seo优化外链建设
  • 做网站阳泉巨量千川广告投放平台
  • 温岭哪里有做网站的如何自制网站
  • 知道创于 wordpress搜索引擎优化宝典
  • 乌兰县wap网站建设公司有效获客的六大渠道
  • 微信网站开发教程视频教程百度一下主页官网
  • 网站开发专业前景关键词挖掘排名
  • 网站开发属于什么职位类别seo查询站长工具
  • wordpress postmetaseoul national university
  • 商务网站的主要存在形式杭州百度快照优化公司
  • 个人备案网站做购物网站可以不班级优化大师免费下载电脑版
  • 贸易网站建设互联网广告代理加盟