在Spring Boot中可以通过spring-boot-starter-quartz可以实现定时任务

Maven依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-quartz</artifactId>
</dependency>

Bean配置

定时任务相关配置,比如我们设置定时任务时间间隔为3秒,具体看如下代码注释

@Configuration
public class CustomizeScheduleConfigTask {
    /**
     * 定时任务
     * @return
     */
    @Bean
    public JobDetail testJobDetail() {
        return JobBuilder.newJob(TestJobBean.class)
                .withIdentity("testJobDetail")
                .storeDurably()
                .build();
    }

    /**
     * 触发器,每间隔一段时间触发定时任务
     * @param jobDetail 具体执行的定时任务
     * @return
     */
    @Bean
    public Trigger testJobTrigger(@Qualifier("testJobDetail") JobDetail jobDetail) {
        ScheduleBuilder scheduleBuilder = SimpleScheduleBuilder
                .simpleSchedule()
                .withIntervalInSeconds(3) // 定时任务间隔时间
                .repeatForever(); // 触发器无限循环触发
        return TriggerBuilder.newTrigger()
                .forJob(jobDetail)
                .withIdentity("testJobTrigger")
                .withSchedule(scheduleBuilder)
                .build();
    }
}

定时任务实现

具体的定时任务内容,这里简单打印下当前线程和时间

@Service
public class TestJobBean extends QuartzJobBean {
    @Override
    protected void executeInternal(JobExecutionContext jobExecutionContext) {
        System.out.println("TestJobBean:::" + Thread.currentThread().getName() + ":::" + SimpleDateFormat.getDateTimeInstance().format(new Date()));
    }
}

运行项目可以看到打印的日志,每条任务之间的间隔是3秒

每个任务运行在不同的线程,后面线程会复用,说明有个线程池

TestJobBean:::quartzScheduler_Worker-3:::Aug 5, 2020 2:56:44 PM
TestJobBean:::quartzScheduler_Worker-4:::Aug 5, 2020 2:56:47 PM
TestJobBean:::quartzScheduler_Worker-5:::Aug 5, 2020 2:56:50 PM
TestJobBean:::quartzScheduler_Worker-6:::Aug 5, 2020 2:56:53 PM
TestJobBean:::quartzScheduler_Worker-7:::Aug 5, 2020 2:56:56 PM
TestJobBean:::quartzScheduler_Worker-8:::Aug 5, 2020 2:56:59 PM
TestJobBean:::quartzScheduler_Worker-10:::Aug 5, 2020 2:57:02 PM
TestJobBean:::quartzScheduler_Worker-2:::Aug 5, 2020 2:57:05 PM
TestJobBean:::quartzScheduler_Worker-3:::Aug 5, 2020 2:57:08 PM
TestJobBean:::quartzScheduler_Worker-1:::Aug 5, 2020 2:57:11 PM

 

 

 

 

 

 

 

GitHub 加速计划 / sp / spring-boot
73.97 K
40.4 K
下载
spring-projects/spring-boot: 是一个用于简化Spring应用开发的框架。适合用于需要快速开发企业级Java应用的项目。特点是可以提供自动配置、独立运行和内置的Tomcat服务器,简化Spring应用的构建和部署。
最近提交(Master分支:2 个月前 )
68022ef0 Update `StructuredLoggingJsonProperties` to use a real Class reference rather than a String. Closes gh-43202 5 天前
d83d34d1 - 5 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐