首页 > 编程语言 > 正文

java任务调度,java中的quartz任务调度框架,触发器的设置,管理员操作 3个·工作日后执行任务,如何实现?

2020-05-20 09:39:21  来源:http://www.capsicumpm.com  编辑:admin

定时调度框架quartz可以定义单个触发器多个任务吗

单个触发器只能单个任务,单个任务可以多个触发器触发。Quartz是一个用Java编写的任务调度框架,任务调度是什么,举例说明:比如需要在每个星期四下午三点时候发周报,我们需要一个系统在两点半的时候给一个发周报的提醒,这个提醒就是一次任务,每周星期四下午两点半的时候自动触发这个任务,这就可以理解为这个系统的一次任务调度。Quartz 提供给定时调度已定义好的任务的能力,如果了解quartz的调度计划cronExpression表达式的配置,会感叹quartz的灵活与强大。扩展资料:Quartz框架的核心是调度器。调度器负责管理Quartz应用运行时环境。调度器不是靠自己做所有的工作,而是依赖框架内一些非常重要的部件。Quartz不仅仅是线程和线程管理。为确保可伸缩性,Quartz采用了基于多线程的架构。启动时,框架初始化一套worker线程,这套线程被调度器用来执行预定的作业。这就是Quartz怎样能并发运行多个作业的原理。Quartz依赖一套松耦合的线程池管理部件来管理线程环境。本篇文章中,会多次提到线程池管理,但Quartz里面的每个对象是可配置的或者是可定制的。参考资料来源:百度百科-quartz

java中的quartz任务调度框架,触发器的设置,管理员操作 3个·工作日后执行任务,如何实现?

任务类里面计算触发时间,对触发时间进行设定。

java 自动收货用哪个任务调度框架好

第一种方法是写一个线程,每秒运行一次,检测当前系统时间,如果是0时0分0秒,那么就把count设为1第二种方法是用quartz框架,进行调度,调度规则是每天0点整运行一次,运行的内容就是把count设为1

java代码启动一个定时任务

在应用里经常都有用到在后台跑定时任务的需求。举个例子,比如需要在服务后台跑一个定时任务来进行非实时计算,清除临时数据、文件等。在本文里,3种不同的实现方法:普通thread实现TimerTask实现ScheduledExecutorService实现1.普通thread这是最常见的,创建一个thread,然后让它在while循环里一直运行着,通过sleep方法来达到定时任务的效果。这样可以快速简单的实现,代码如下:public class Task1 {public static void main(String[] args) { // run in a second final long timeInterval = 1000; Runnable runnable = new Runnable() { public void run() { while (true) { // ------- code for task to run System.out.println("Hello !!"); // ------- ends here try { Thread.sleep(timeInterval); } catch (InterruptedException e) { e.printStackTrace(); } } } }; Thread thread = new Thread(runnable); thread.start(); }}2.用Timer和TimerTask上面的实现是非常快速简便的,但它也缺少一些功能。用Timer和TimerTask的话与上述方法相比有如下好处:当启动和去取消任务时可以控制第一次执行任务时可以指定你想要的delay时间在实现时,Timer类可以调度任务,TimerTask则是通过在run()方法里实现具体任务。Timer实例可以调度多任务。当Timer的构造器被调用时,创建了一个线程,这个线程可以用来调度任务:import java.util.Timer;import java.util.TimerTask;public class Task2 { public static void main(String[] args) { TimerTask task = new TimerTask() { @Override public void run() { // task to run goes here System.out.println("Hello !!!"); } }; Timer timer = new Timer(); long delay = 0; long intevalPeriod = 1 * 1000; // schedules the task to be run in an interval timer.scheduleAtFixedRate(task, delay, intevalPeriod); } // end of main}3.ScheduledExecutorServiceScheduledExecutorService是从Java SE 5的java.util.concurrent里,做为并发工具类被引进的,这是最理想的定时任务实现方式。相比于上两个方法,它有以下好处: 相比于Timer的单线程,它是通过线程池的方式来执行任务的 可以很灵活的去设定第一次执行任务delay时间 提供了良好的约定,以便设定执行的时间间隔 通过ScheduledExecutorService#scheduleAtFixedRate展示这个例子,通过代码里参数的控制,首次执行加了delay时间:import java.util.concurrent.Executors;import java.util.concurrent.ScheduledExecutorService;import java.util.concurrent.TimeUnit;public class Task3 { public static void main(String[] args) { Runnable runnable = new Runnable() { public void run() { // task to run goes here System.out.println("Hello !!"); } }; ScheduledExecutorService service = Executors .newSingleThreadScheduledExecutor(); service.scheduleAtFixedRate(runnable, 0, 1, TimeUnit.SECONDS); }}

spring怎么设置定时任务为每天凌晨2点执行和每小时执行一次?

每天凌晨2点 0 0 2 * * ?和每天隔一小时 0 * */1 * * ?例1:每隔5秒执行一次:*/5 * * * * ?例2:每隔5分执行一次:0 */5 * * * ?在26分、29分、33分执行一次:0 26,29,33 * * * ?例3:每天半夜12点30分执行一次:0 30 0 * * ? (注意日期域为0不是24)每天凌晨1点执行一次:0 0 1 * * ?每天上午10:15执行一次: 0 15 10 ? * * 或 0 15 10 * * ? 或 0 15 10 * * ? *每天中午十二点执行一次:0 0 12 * * ?每天14点到14:59分,每1分钟执行一次:0 * 14 * * ?每天14点到14:05分,每1分钟执行一次:0 0-5 14 * * ?每天14点到14:55分,每5分钟执行一次:0 0/5 14 * * ?每天14点到14:55分,和18点到18点55分,每5分钟执行一次:0 0/5 14,18 * * ?每天18点执行一次:0 0 18 * * ?每天18点、22点执行一次:0 0 18,22 * * ?每天7点到23点,每整点执行一次:0 0 7-23 * * ?每个整点执行一次:0 0 0/1 * * ?