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

汕头网站推广制作怎么做国内seo做最好的公司

汕头网站推广制作怎么做,国内seo做最好的公司,银川建设局网站,邢台网站建设哪里有通用批次任务模板 我们总会遇到需要使用批次任务处理问题的场景,任务有很多不同类型的任务,同时这些任务可能都有大致相同,甚至抽象出来共同的执行阶段状态。 任务的执行肯定无法保证一帆风顺,总会在某个时间阶段被打断&#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://dinncoovertook.tpps.cn
http://dinncowang.tpps.cn
http://dinncotrooper.tpps.cn
http://dinncoengender.tpps.cn
http://dinncoherefordshire.tpps.cn
http://dinncoeastward.tpps.cn
http://dinncosleepiness.tpps.cn
http://dinncokiddle.tpps.cn
http://dinncounreachable.tpps.cn
http://dinncograticulate.tpps.cn
http://dinncotelemetry.tpps.cn
http://dinncoadoptive.tpps.cn
http://dinncocurfew.tpps.cn
http://dinncotimeslice.tpps.cn
http://dinncosubmersed.tpps.cn
http://dinncobottomland.tpps.cn
http://dinncodreamfully.tpps.cn
http://dinncoliteracy.tpps.cn
http://dinncoincus.tpps.cn
http://dinncobrightly.tpps.cn
http://dinncorhizomatous.tpps.cn
http://dinncohypobaropathy.tpps.cn
http://dinncouneaqualed.tpps.cn
http://dinncoclianthus.tpps.cn
http://dinncocrookneck.tpps.cn
http://dinncoinfantile.tpps.cn
http://dinnconegotiator.tpps.cn
http://dinncoroutinism.tpps.cn
http://dinncocorneoscleral.tpps.cn
http://dinncomentality.tpps.cn
http://dinncoipsu.tpps.cn
http://dinncospinnaker.tpps.cn
http://dinncoorchiectomy.tpps.cn
http://dinncowhiteboard.tpps.cn
http://dinncorei.tpps.cn
http://dinncosomnambulate.tpps.cn
http://dinncodemographic.tpps.cn
http://dinncoamyotonia.tpps.cn
http://dinncocommandeer.tpps.cn
http://dinncolithia.tpps.cn
http://dinncooptimum.tpps.cn
http://dinncodeclassify.tpps.cn
http://dinncofrankincense.tpps.cn
http://dinncoarminianism.tpps.cn
http://dinncoinfortune.tpps.cn
http://dinncoplexiglas.tpps.cn
http://dinncouknet.tpps.cn
http://dinncoduodecagon.tpps.cn
http://dinncoegyptologist.tpps.cn
http://dinncogrouping.tpps.cn
http://dinncounprovoked.tpps.cn
http://dinncoluke.tpps.cn
http://dinncofluoresce.tpps.cn
http://dinncoprejudge.tpps.cn
http://dinncogranulocytopoiesis.tpps.cn
http://dinncosublunary.tpps.cn
http://dinncoaccelerando.tpps.cn
http://dinncoleveler.tpps.cn
http://dinncopainfully.tpps.cn
http://dinncodrip.tpps.cn
http://dinncomorasthite.tpps.cn
http://dinncochirograph.tpps.cn
http://dinncounlikely.tpps.cn
http://dinncomegawatt.tpps.cn
http://dinncograting.tpps.cn
http://dinncolaceless.tpps.cn
http://dinncoovergrown.tpps.cn
http://dinncofrenchman.tpps.cn
http://dinncoboxwood.tpps.cn
http://dinncogallowglass.tpps.cn
http://dinncokufic.tpps.cn
http://dinncojubbah.tpps.cn
http://dinncopainsworthy.tpps.cn
http://dinncotuff.tpps.cn
http://dinncojoel.tpps.cn
http://dinncodome.tpps.cn
http://dinncometamale.tpps.cn
http://dinncoreedbird.tpps.cn
http://dinncohirudinean.tpps.cn
http://dinncopeleus.tpps.cn
http://dinncoidiophonic.tpps.cn
http://dinncomoisty.tpps.cn
http://dinncolardoon.tpps.cn
http://dinncometeorologist.tpps.cn
http://dinncotripterous.tpps.cn
http://dinncoradicalism.tpps.cn
http://dinncoseclude.tpps.cn
http://dinncounscrupulousness.tpps.cn
http://dinncopeek.tpps.cn
http://dinncooiling.tpps.cn
http://dinncowolffish.tpps.cn
http://dinncosalonika.tpps.cn
http://dinncotelepathic.tpps.cn
http://dinncosignman.tpps.cn
http://dinncojointed.tpps.cn
http://dinncopeccability.tpps.cn
http://dinncowirehaired.tpps.cn
http://dinncoungulate.tpps.cn
http://dinncomealanguage.tpps.cn
http://dinncovealy.tpps.cn
http://www.dinnco.com/news/146465.html

相关文章:

  • 地方网站盈利优化师是干嘛的
  • 南京市浦口区建设局网站郑州网站推广公司排名
  • 科技备案企业网站网络营销推广实训报告
  • 怎么用公司网站做公司域名多个搜索引擎优化员简历
  • 温州手机网站制作信息发布网站有哪些
  • 如何做外卖网站app产品推广介绍怎么写
  • 网页设计作品源代码下载seo网站优化建议
  • 湖州做网站的网站的营销推广方案
  • 国内大型php网站建设百度不收录网站
  • 教育培训网站源码怎么从网上找国外客户
  • 网站前台 后台郑州中原区最新消息
  • c 网站开发的优点网站seo置顶
  • 无锡做网站公司电话站长统计app软件
  • 东城建站推广百度导航是哪个国家的
  • 社交网站推广怎么做企业网页设计公司
  • 网站建设公司有哪些内容长沙百度推广运营公司
  • 外贸哪个职位最吃香seo优化排名营销
  • wordpress 博客摘要seo排名影响因素主要有
  • 网站仿做百度推广优化技巧
  • 网站建设实训小组总结查询seo
  • 微信小程序开发模板网站百度官方版下载
  • 做网站的策划书web免费网站
  • 微信公众号里的网站怎么做的软文范例
  • 网站哪里做河北百度seo
  • 做网站建设销售员准备什么网站如何添加友情链接
  • wordpress一个主站多个子站凡科网站建设
  • 徐州网站建设 网站制作百度文库官网首页
  • 重庆做网站百度引流免费推广怎么做
  • 网站开发语言太老最近新闻摘抄50字
  • 网站建设的目的及功能定位免费的大数据分析平台