定时任务,不陌生。

一、JDK 原生

java.util.Timer

1. 提供了API 用来提交任务

2.使用while 循环来执行 任务

3. 任务保存在数组中,如果没有任务执行,则 wait

java.util.TimerTask

一个抽象 线程类,用来保证 任务

示例:

Timer timer = new Timer();timer.schedule(new TimerTask() {@Overridepublic void run() {System.out.printf("TimerTask exe:"+Thread.currentThread().getName());}}, 0, 10 * 1000);  // 单位是毫秒

二.  Spring 提供的 定时任务

只需要在 方法上加上

@Scheduled

注解,就OK了。 这个用起来非常便捷。

org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration

在spring boot 项目启动时,这个类会 创建 必要的bean。

org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler

会创建一个   ScheduledExecutorService

org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor

后置处理器:

1.  处理  Scheduled 注解的方法

2. 使用 ScheduledExecutorService 执行 task

注意:

线程池默认是 1 个线程,如果要增加线程池个数,可以用配置:

spring.task.scheduling.pool.size

三.  xxl-job

https://github.com/xuxueli/xxl-job.git/

1. xxl-job 有一个控制台,需要部署之后,用来注册Job。 需要使用到 mysql 数据库

2. 具体的Job 方法写完之后,spring boot项目 使用

@XxlJob

注解标识这个方法,就OK了,也不复杂。

1.  控制台部署

xxljob 依赖 数据库 保存 job的数据信息,所以 首先需要 建库建表。所需要的建表语句 再源码包中已经提供。

数据库配置完成后,直接 部署 控制服务就可以了。就是一个 spring boot 的应用。

默认用户名密码: admin/123456

2. 应用配置

1. 引入依赖包:

        <dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job-core</artifactId></dependency>

2. 配置 属性

xxl:job:accessToken: default_tokenadmin:addresses: http://127.0.0.1:8080/xxl-job-adminexecutor:address: ''appname: xxl-job-executor-sampleip: ''logpath: /data/applogs/xxl-job/jobhandlerlogretentiondays: 30port: 9999

3. 添加 注册器bean

@Beanpublic XxlJobSpringExecutor xxlJobExecutor() {XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();xxlJobSpringExecutor.setAdminAddresses(adminAddresses);xxlJobSpringExecutor.setAppname(appname);xxlJobSpringExecutor.setIp(ip);xxlJobSpringExecutor.setPort(port);xxlJobSpringExecutor.setAccessToken(accessToken);xxlJobSpringExecutor.setLogPath(logPath);xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);return xxlJobSpringExecutor;}

配置完后,可以开始编写任务:

    @XxlJob("doLoadJob")public void doLoadJob(){System.out.printf("doLoadJob");}

功能点:

1. 服务启动后,自动向 控制台注册自己的 地址

2. 控制台注册 任务时,可以选择一种路由策略: 分片广播

分片广播的原理:

拿到 注册的所有的 服务IP,遍历执行 http请求。

对于分片广播,需要 再编写 Job时,完成 分片处理。xxlJob 不会给你的任务做分片,它只是 触发每台服务执行一下任务而已。

对于分片方法,可以自己定义:

任务数%机器数 == 当前机器编号 时,执行

3. 服务接收到任务请求后,会把任务 放在队列中,由 其他的线程异步执行。

四.Quartz

官网:

http://www.quartz-scheduler.org/

在编写代码时,稍微复杂一下,需要实现Job接口,创建 JobDetail、Trigger、Scheduler 等来协助完成调度你的任务。

五、Elastic-Job

需要用到 zookeeper来协助完成。目前为止没有用过。

Job Scheduling简介相关推荐

  1. sparkcore分区_Spark学习:Spark源码和调优简介 Spark Core (二)

    本文基于 Spark 2.4.4 版本的源码,试图分析其 Core 模块的部分实现原理,其中如有错误,请指正.为了简化论述,将部分细节放到了源码中作为注释,因此正文中是主要内容. 第一部分内容见: S ...

  2. 大连理工计算机专业导师,大连理工大学计算机科学与技术学院研究生导师简介-申彦明...

    大连理工大学计算机科学与技术学院研究生导师简介-申彦明大连理工大学 免费考研网/2016-05-04 申彦明院系:计算机科学与技术学院 办公电话:无 电子信箱:shen@dlut.edu.cn 更新时 ...

  3. Spring boot定时任务(Scheduling Tasks)

    定时任务(Scheduling Tasks) 这篇文章将介绍怎么通过spring去做调度任务. 简介 定时任务或者说定时调度,是系统中比较普遍的一个功能,例如数据归档.清理,数据定时同步(非实时),定 ...

  4. hls fifo_【正点原子FPGA连载】第一章HLS简介--领航者ZYNQ之HLS 开发指南

    1)摘自[正点原子]领航者ZYNQ之HLS 开发指南 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手 ...

  5. CNN结构:MXNet设计和实现简介

    对原文有大量修改,如有疑惑,请移步原文. 参考链接:MXNet设计和实现简介 文章翻译于:https://mxnet.incubator.apache.org/architecture/index.h ...

  6. 六款值得推荐的Android开源框架简介

    六款值得推荐的Android开源框架简介 技术不再多,知道一些常用的.不错的就够了.下面就是最近整理的"性价比"比较高的Android开源框架,应该是相对实用的. 1.volley ...

  7. 爬虫基础(五)-----scrapy框架简介

    ---------------------------------------------------摆脱穷人思维 <五> :拓展自己的视野,适当做一些眼前''无用''的事情,防止进入只关 ...

  8. Quartz简介及应用场景

    Quartz简介及应用场景 1. Quartz介绍 核心类介绍 简单触发器 创建一个Quartz项目 pom导入: 入门级案例 最终执行,是没6秒指定一次,自行三次,触发器设定的. 表达式触发器 表达 ...

  9. 【Vitis Accel】1 - HLS 简介

    目录 HLS 简介 1. 工作过程 1.1 Scheduling 部署 1.2 Binding 捆绑 1.3 Control logic extraction 控制逻辑提取 2. 综合过程 3. 性能 ...

最新文章

  1. 算法基础(09)— 字符串常用操作
  2. 面试热点Redis分布式锁,再细说一次
  3. springMVC参数传递(三)
  4. go网站服务器搭建,使用Go搭建服务器记录(一)
  5. java中测试计算能力_这 10 道 Java 测试题,据说阿里 P7 的正确率只有 50%
  6. 计算机重启是什么原因,电脑自动重启,该怎么办,到底是什么原因,我来详细说明?...
  7. EJB Remote/Local 绑定和JNDI Lookup
  8. PCDN实现flash无延时直播的技术原理与优点 1
  9. Shell中通过机器人发送钉钉群消息
  10. Oracle 开放源代码项目
  11. .Net读取Excel的数据类型不统一获取空值问题
  12. 苹果智能家居的未来之路
  13. Sublime Text格式化SQL
  14. NeoKylin Linux Advanced Server release 6.0 安装及卸载达梦7入门操作
  15. C++课后作业 10.教材习题7_6:哺乳动物类Mammal派生出狗类Dog
  16. 序列化(boost serialization)
  17. arduino系列教程之触摸开关(外部中断)开关小灯led
  18. 社群运营,日常社群管理有哪些要点?
  19. 联想小新 Pro 16 2023 评测
  20. 智慧工厂之化工厂人员定位系统,工厂实时定位,视频联动-新导智能

热门文章

  1. 【opencv-c++】cv::inRange阈值操作选择指定值范围的像素
  2. 网易2017内推笔试题--小易老师的疯狂数列
  3. 如何看待996现象,996工作模式是种什么样的体验?
  4. IPUDN(用于单幅图像去雾的透射图和大气光导迭代更新器网络)CVPR_2020
  5. VUE 前端PDF分页预览、下载
  6. 51智能小车黑线寻迹(防出线)
  7. 基于图像的三维重建研究
  8. excel VLOOKUP函数的使用方法
  9. 互联网其它岗位薪资排行榜
  10. 判断字符串是否为回文串