| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- package com.ydtech.utils.scheduledFutureUtil;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
- import org.springframework.scheduling.support.CronTrigger;
- import org.springframework.stereotype.Component;
- import java.util.HashMap;
- import java.util.concurrent.ScheduledFuture;
- @Slf4j
- @Component
- public class ScheduledFutureUtil {
- //存储任务执行的包装类
- public static HashMap<String, ScheduledFutureHolder> scheduleMap = new HashMap<>();
- @Autowired
- private ThreadPoolTaskScheduler threadPoolTaskScheduler;
- public void startJob(Runnable runnable, String cron) {
- //将任务交给任务调度器执行
- ScheduledFuture<?> schedule = threadPoolTaskScheduler.schedule(runnable, new CronTrigger(cron));
- //将任务包装成ScheduledFutureHolder
- ScheduledFutureHolder scheduledFutureHolder = new ScheduledFutureHolder();
- scheduledFutureHolder.setScheduledFuture(schedule);
- scheduledFutureHolder.setRunnableClass(runnable.getClass());
- scheduledFutureHolder.setCorn(cron);
- scheduleMap.put(scheduledFutureHolder.getRunnableClass().getName(), scheduledFutureHolder);
- }
- public void endJob(String className){
- if(ScheduledFutureUtil.scheduleMap.containsKey(className)){//如果包含这个任务
- ScheduledFuture<?> scheduledFuture = ScheduledFutureUtil.scheduleMap.get(className).getScheduledFuture();
- if(scheduledFuture!=null){
- scheduledFuture.cancel(true);
- log.info("{}任务已停止",className);
- }
- }
- }
- }
|