spring可配置定时器

编程

1、初始化配置

package com.zhoulp.timer;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.scheduling.TaskScheduler;

import org.springframework.scheduling.annotation.EnableAsync;

import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;

import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**

*

*

* @Description 初始化配置

* @author zhoulongpeng

* @date 2020年1月14日 下午8:21:13

*

*/

@Configuration

@EnableAsync

public class InitConfigurer implements WebMvcConfigurer {

@Bean

public TaskScheduler initTaskScheduler() {

ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();

scheduler.setPoolSize(8);

scheduler.setThreadNamePrefix("timer-task-");

return scheduler;

}

}

2、启动定时器

package com.zhoulp.timer.schedule;

import java.util.Date;

import java.util.concurrent.ScheduledFuture;

import javax.annotation.PostConstruct;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.scheduling.TaskScheduler;

import org.springframework.scheduling.Trigger;

import org.springframework.scheduling.TriggerContext;

import org.springframework.scheduling.support.CronTrigger;

import org.springframework.stereotype.Component;

import com.zhoulp.timer.ScheduleCronConstant;

import com.zhoulp.timer.ScheduleServicePool;

/**

*

* @Description

* @author zhoulongpeng

* @date 2020年1月14日 下午8:14:10

*

*/

@Component("scheduleDynamicCronDemo")

public class ScheduleDynamicCronDemo implements TimerInterface {

@Autowired

private TaskScheduler taskScheduler;

private ScheduledFuture<?> future;

/**

* @Description 启动定时器

*/

@PostConstruct

@Override

public void start() {

ScheduleServicePool.addTimer("demo1", this);

restart(ScheduleCronConstant.DEMO_CRON1);

}

@Override

public void restart(long period) {

// 不需要实现

}

/**

* @Description 重启启动定时器

*/

@Override

public void restart(String cron) {

stop();

future = taskScheduler.schedule(new Runnable() {

@Override

public void run() {

try {

System.out.println("timer1: begin call business code");

// scheduleExport.scheduleTaskExport();// 异步定时生成文件

System.out.println("timer1: end call business code");

} catch (Exception e) {

// TODO: handle exception

e.printStackTrace();

}

}

}, new Trigger() {

@Override

public Date nextExecutionTime(TriggerContext triggerContext) {

// 定时任务触发,可修改定时任务的执行周期

CronTrigger trigger = new CronTrigger(cron);

Date nextExecDate = trigger.nextExecutionTime(triggerContext);

return nextExecDate;

}

});

}

@Override

public void stop() {

if (future != null) {

future.cancel(true);// 取消任务调度

}

}

}

以上是 spring可配置定时器 的全部内容, 来源链接: utcz.com/z/519192.html

回到顶部