一分钟掌握Java Quartz定时任务

一分钟掌握Java Quartz定时任务攻略

Java Quartz是一款轻量级的定时任务调度框架,它的使用非常简单,可以让开发者快速地实现定时任务调度。

Quartz的入门

在使用Quartz之前,需要先将Quartz的jar包导入到项目中。这里我们使用Maven进行依赖管理,只需要在pom.xml文件中增加如下依赖:

<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz</artifactId>
    <version>2.3.2</version>
</dependency>

接着在代码中创建一个Job类,实现execute方法,这个方法就是具体的定时任务。例如:

public class MyJob implements Job {
    public void execute(JobExecutionContext context) throws JobExecutionException {
        System.out.println("定时任务执行了!");
    }
}

最后创建一个Scheduler实例,调度MyJob进行定时任务的执行:

public class QuartzTest {
    public static void main(String[] args) throws SchedulerException {
        // 创建scheduler
        Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

        // 定义一个Trigger
        Trigger trigger = TriggerBuilder.newTrigger()
                .withIdentity("trigger1", "group1")
                .startNow()
                .withSchedule(SimpleScheduleBuilder.simpleSchedule()
                        .withIntervalInSeconds(10) // 每10秒执行一次
                        .repeatForever())
                .build();

        // 定义一个JobDetail
        JobDetail job = JobBuilder.newJob(MyJob.class)
                .withIdentity("job1", "group1")
                .build();

        // 将JobDetail和Trigger注册到scheduler中
        scheduler.scheduleJob(job, trigger);

        // 启动scheduler
        scheduler.start();
    }
}

这段代码中,我们定义了一个Trigger,将定时任务设置为每10秒执行一次,然后将MyJob类注册到scheduler中,并启动scheduler。当scheduler启动后,定时任务就会开始执行。

Quartz的高级应用

在使用Quartz时,可以根据不同的需求,创建不同类型的Trigger,如SimpleTrigger、CronTrigger、DailyTimeIntervalTrigger等。其中,CronTrigger可以对定时任务的执行时间进行更加精细的控制,下面给出两个使用CronTrigger的示例。

  1. 每周一、周三、周五上午10:15执行一次定时任务:
public class QuartzTest {
    public static void main(String[] args) throws SchedulerException {
        // 创建scheduler
        Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

        // 定义一个Trigger
        Trigger trigger = TriggerBuilder.newTrigger()
                .withIdentity("trigger1", "group1")
                .startNow()
                .withSchedule(CronScheduleBuilder.cronSchedule("0 15 10 ? * MON,WED,FRI"))
                .build();

        // 定义一个JobDetail
        JobDetail job = JobBuilder.newJob(MyJob.class)
                .withIdentity("job1", "group1")
                .build();

        // 将JobDetail和Trigger注册到scheduler中
        scheduler.scheduleJob(job, trigger);

        // 启动scheduler
        scheduler.start();
    }
}
  1. 每天上午10点到下午4点,每隔30分钟执行一次定时任务:
public class QuartzTest {
    public static void main(String[] args) throws SchedulerException {
        // 创建scheduler
        Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

        // 定义一个Trigger
        Trigger trigger = TriggerBuilder.newTrigger()
                .withIdentity("trigger1", "group1")
                .startNow()
                .withSchedule(DailyTimeIntervalScheduleBuilder.dailyTimeIntervalSchedule()
                        .startingDailyAt(TimeOfDay.hourAndMinuteOfDay(10, 0))
                        .endingDailyAt(TimeOfDay.hourAndMinuteOfDay(16, 0))
                        .onEveryDay()
                        .withInterval(30, DateBuilder.IntervalUnit.MINUTE))
                .build();

        // 定义一个JobDetail
        JobDetail job = JobBuilder.newJob(MyJob.class)
                .withIdentity("job1", "group1")
                .build();

        // 将JobDetail和Trigger注册到scheduler中
        scheduler.scheduleJob(job, trigger);

        // 启动scheduler
        scheduler.start();
    }
}

上述两个示例分别使用了CronTrigger和DailyTimeIntervalTrigger来实现精细控制定时任务的执行时间,对于有高精度定时任务需求的场景,可以使用这些高级Trigger。

总结

Quartz是一款简洁而强大的定时任务调度框架,适合用于各种定时任务的执行。上面的示例代码可以轻松入门Quartz,而且对于有高精度定时任务需求的场景,Quartz也能满足需求。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一分钟掌握Java Quartz定时任务 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Java实现窗体程序显示日历

    以下是详细的Java实现窗体程序显示日历的攻略: 1.准备工作 在开始编程前,需要先确定使用的开发环境和GUI工具包。一般来说,Java提供了多种GUI工具包,常见的有AWT、Swing和JavaFX等。在本文中,我们使用的是Swing工具包,因为其扩展性较强、易于学习和使用。 2.创建窗体 创建窗体需要继承JFrame类,并实现设置标题、大小、位置和关闭操…

    Java 2023年5月20日
    00
  • java实现上传图片并压缩图片大小功能

    要实现Java上传图片并压缩图片大小的功能,我们可以通过以下步骤完成: Step 1: 添加依赖 我们需要向项目中添加一些依赖,以便能够操作图片。这里我们推荐使用 Thumbnails这个依赖库,可以简化图片处理操作。 <dependency> <groupId>net.coobird</groupId> <arti…

    Java 2023年5月19日
    00
  • 如何使用Spring Security手动验证用户的方法示例

    下面我为你讲解如何使用Spring Security手动验证用户的方法示例,并提供两个示例。 如何使用Spring Security手动验证用户的方法示例 概述 Spring Security是一个基于Spring框架的安全性解决方案,它提供了许多实用的功能,可以用于开发安全的web应用程序。其中之一就是手动验证用户的方法。 在Spring Security…

    Java 2023年5月20日
    00
  • Java开发中为什么要使用单例模式详解

    单例模式是一种创建型设计模式,用于确保一个特定类只能有一个实例,并且提供全局访问点。在Java开发中,单例模式是一个常用的设计模式,因为它可以帮助我们管理应用程序中的全局状态,减少内存使用,并提高代码的可测试性。 下面是Java开发中为什么要使用单例模式的详细攻略: 1. 避免对象的重复创建 在应用程序中,某些对象只需要一个实例,如果每次需要使用该对象时都创…

    Java 2023年5月26日
    00
  • 解决SpringBoot启动过后不能访问jsp页面的问题(超详细)

    解决SpringBoot启动过后不能访问jsp页面的问题(超详细) 问题描述 SpringBoot是一个高度集成化的框架,它不需要xml和配置文件即可构建Spring应用程序。然而,当我们在使用SpringBoot构建web应用程序的过程中,有时会遇到不能访问jsp页面的问题。这是因为SpringBoot默认使用thymeleaf作为模板引擎,而不是jsp。…

    Java 2023年6月15日
    00
  • Idea如何导入一个SpringBoot项目的方法(图文教程)

    下面我将详细讲解Idea如何导入一个SpringBoot项目的方法。 1. 创建SpringBoot项目 首先,我们需要创建一个SpringBoot项目,这里以使用Spring Initializr来创建为例。打开https://start.spring.io/,根据需求选择相应的配置,然后点击Generate下载生成的项目压缩包。解压后我们就得到了一个基本…

    Java 2023年5月19日
    00
  • 一小时迅速入门Mybatis之实体类别名与多参数 动态SQL

    接下来我将详细讲解一小时迅速入门Mybatis之实体类别名与多参数 动态SQL的完整攻略。 1. 实体类别名 在Mybatis中,可以通过定义实体类别名来简化配置文件的编写和参数的传递。实体类别名可以定义为别名或默认别名。默认别名是一个类名(不含包名),别名可以自定义。另外,需要在配置文件中使用typeAliases节点对别名进行配置。 1.1 别名配置 别…

    Java 2023年5月20日
    00
  • SpringBoot SpringSecurity 介绍(基于内存的验证)

    SpringBoot 集成 SpringSecurity + MySQL + JWT 附源码,废话不多直接盘SpringBoot已经为用户采用默认配置,只需要引入pom依赖就能快速启动Spring Security。目的:验证请求用户的身份,提供安全访问优势:基于Spring,配置方便,减少大量代码 内置访问控制方法 permitAll() 表示所匹配的 U…

    Java 2023年4月27日
    00
合作推广
合作推广
分享本页
返回顶部