ScheduledFuture动态定时任务实现,可进行任务取消以及任务执行时间修改_scheduledfuture<?>_EntyIU的博客-CSDN博客

一,配置定时任务线程池

@Configurationpublic class ScheduledConfig {    @Bean    public ThreadPoolTaskScheduler threadPoolTaskScheduler() {        ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler();        threadPoolTaskScheduler.setPoolSize(3);        threadPoolTaskScheduler.setRemoveOnCancelPolicy(true);        return threadPoolTaskScheduler;    }}

二,定时任务存储类

/** * 定时任务执行的包装类 */@Datapublic class ScheduledFutureHolder {    private ScheduledFuture<?> scheduledFuture;     private String uuid;     private String corn; }

三,定时任务容器,以及定时任务启动和取消

    //定时任务容器    private  Map<String, ScheduledFutureHolder> scheduleMap = new ConcurrentHashMap<>();     //引入定时任务线程池     private final ThreadPoolTaskScheduler threadPoolTaskScheduler;      //启动定时任务     ScheduledFuture<?> schedule = threadPoolTaskScheduler.schedule(new BackupTask(), new CronTrigger("cron表达式"));         //备份异步定时任务    class BackupTask implements Runnable {         @Override        public void run() {            //                Task(one, backupParam);            System.out.println("测试+“-----------------------------------------”");        }    }     //停止定时任务           ScheduledFutureHolder scheduledFutureHolder = scheduleMap.get(backupConfigService.getOne(new LambdaQueryWrapper<BackupConfig>().eq(BackupConfig::getId, deleteBackupConfigParam.getId())).getScheduledStr());        ScheduledFuture<?> scheduledFuture = scheduledFutureHolder.getScheduledFuture();        //停止定时任务        boolean cancel = scheduledFuture.cancel(true);

原网址: 访问
创建于: 2023-10-13 10:05:24
目录: default
标签: 无

请先后发表评论
  • 最新评论
  • 总共0条评论