Spring定时任务

在企业的实际生产中,可能需要使用一些定时任务。在Spring中使用定时器是比较简单的,首先在配置文件中加入@EnabelScheduling,就能够使用注解驱动定时任务的机制,然后可以通过注解@Scheduled去配置如何定时。

我们先在Spring Boot的启动类中加入@EnabelScheduling注解,然后开一个服务类,代码如下:

package com.martin.config.other.scheduler;

import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;

/**
 * @author: martin
 * @date: 2020/2/6
 */
@Service
@Slf4j
public class ScheduleServiceImpl implements SchedeluService {
    @Scheduled(fixedRate = 1000)
    @Async
    @Override
    public void job1() {
        log.error("job1执行:{}", Thread.currentThread().getName());
    }

    @Scheduled(fixedRate = 2000)
    @Override
    public void job2() {
        log.error("job2执行:{}", Thread.currentThread().getName());
    }
}

注解@Scheduled配置为按指定时间间隔执行,使用@Async注解代表这需要使用异步线程去执行。输出的结果如下:

2020-02-06 16:59:33.483 ERROR 9908 --- [lTaskExecutor-6] c.m.c.o.scheduler.ScheduleServiceImpl    : job1执行:ThreadPoolTaskExecutor-6
2020-02-06 16:59:34.484 ERROR 9908 --- [pool-1-thread-1] c.m.c.o.scheduler.ScheduleServiceImpl    : job2执行:pool-1-thread-1
2020-02-06 16:59:34.486 ERROR 9908 --- [lTaskExecutor-7] c.m.c.o.scheduler.ScheduleServiceImpl    : job1执行:ThreadPoolTaskExecutor-7
2020-02-06 16:59:35.485 ERROR 9908 --- [lTaskExecutor-8] c.m.c.o.scheduler.ScheduleServiceImpl    : job1执行:ThreadPoolTaskExecutor-8
2020-02-06 16:59:36.483 ERROR 9908 --- [pool-1-thread-1] c.m.c.o.scheduler.ScheduleServiceImpl    : job2执行:pool-1-thread-1
2020-02-06 16:59:36.485 ERROR 9908 --- [lTaskExecutor-9] c.m.c.o.scheduler.ScheduleServiceImpl    : job1执行:ThreadPoolTaskExecutor-9
2020-02-06 16:59:37.485 ERROR 9908 --- [TaskExecutor-10] c.m.c.o.scheduler.ScheduleServiceImpl    : job1执行:ThreadPoolTaskExecutor-10
2020-02-06 16:59:38.484 ERROR 9908 --- [pool-1-thread-1] c.m.c.o.scheduler.ScheduleServiceImpl    : job2执行:pool-1-thread-1

除了指定时间间隔执行,@Scheduled注解还提供了一些其他的配置项:

这些配置项中,cron是我们比较常见的使用方式,cron可以通过表达式更为灵活地配置运行得方式,关于cron的使用我们可以参考http://cron.qqe2.com/

到这里,关于Spring定时任务使用就介绍到这里,你掌握了吗?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章