@EnableScheduling、@Scheduled

① 在 main 中开启定时任务的注解 @EnableScheduling

package com.cun;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;

@EnableScheduling   //开启定时任务注解
@SpringBootApplication
public class AsMailTaskApplication {

    public static void main(String[] args) {
        SpringApplication.run(AsMailTaskApplication.class, args);
    }
}

②在 Service 中编写定时任务 @Scheduled

fixedDelay: 每次方法执行完毕后,等待Nms再执行此方法。

    /**
     * 每次方法执行完毕后,等待5s再执行此方法。
     *  同时只能有个线程运行此方法
     */
    @Scheduled(fixedDelay=5000)
    public void fixedDelay() {
        try {
            // 执行方法需要10s
            Thread.sleep(1000 * 10);
        } catch (InterruptedException e) {
        }
        log.info("fixedDelay--");
    }

注意:定时方法返回值只能是void且不能有传入参数

fixedRate: 每隔5s调用一次此方法,无论之前的方法是否执行完毕

/**
     * 每隔5s调用一次此方法,无论之前的方法是否执行完毕
     *  同时可能有N个线程执行此方法
     *  
     */
    @Scheduled(fixedRate=5000)
    public void fixedRate() {
        try {
            // 执行方法需要10s
            Thread.sleep(1000 * 10);
        } catch (InterruptedException e) {
        }
        log.info("fixedRate--");
    }

initialDelay: 第一次调用此方法前的等待时间

/***
     * initialDelay: 第一次调用此方法前的等待时间
     * 
     */ 
    @Scheduled(initialDelay=1000, fixedRate=5000)
    public void initialDelayAndfixedRate() {
        log.info("initialDelayAndfixedRate--");
    }

cron:通过cron配置值

    /**
     * 支持cron语法:
     * 每个参数的意义分别是: second, minute, hour, day of month, month, day of week
     * 
     * 如下:周一至周五,每隔5s执行一次方法
     */
    @Scheduled(cron="*/5 * * * * SUN-MON")
    public void cron() {
        log.info("cron--");
    }

③ Maven 依赖

        
            org.springframework.boot
            spring-boot-starter-mail
        

你可能感兴趣的:(@EnableScheduling、@Scheduled)