Spring Boot 定时任务实现的几种方式

 2022-08-25
原文地址:https://cloud.tencent.com/developer/article/2028891

Spring Boot中几种定时任务

Timer类

    public static void main(String[] args){		TimerTask timerTask = new TimerTask() {			@Override
    			public void run() {
    				System.out.println("Timer方式执行一次定时任务");
    			}
    		};		new Timer().schedule(timerTask,,*);
    	}

ScheduledExecutorService类

ScheduledExecutorService,是基于线程设计的定时任务类,每个调度任务都会分配到线程池中的一个线程去并行执行

    public static void main(String[] args){		ScheduledExecutorService scheduledExecutor = Executors.newSingleThreadScheduledExecutor();
    		scheduledExecutor.scheduleAtFixedRate(				new Runnable() {					@Override
    					public void run() {
    						System.out.println("ScheduledExecutorService方式执行一次定时任务");
    					}
    				}
    		,,, TimeUnit.SECONDS);
    	}

Quartz

引入quartz依赖

配置JobDetail和Trigger

测试

Scheduled注解

Spring3.0以后自带的task,在启动类上使用@EnableScheduling开启定时任务支持

使用

@Scheduled(initialDelay = 1000, fixedRate = 3000) 第一次延迟1秒后执行,之后按 fixedRate 的规则每 3 秒执行一次

@Scheduled(cron = "0/10 * * * * ? ")通过 cron 表达式定义规则