Runnable を実装して特定のタスクをスケジュールするこの Quarterly Metric Report Scheduling Service を実行する関数を呼び出すことができstart()ますが、スケジュール時間を変更する必要がある場合に備えて、スケジュールされたタスクを後で停止/キャンセルできる必要もあります。
私は多くの投稿を読み、stop()関数を機能させるためにいくつかの方法を試しましたが、うまくいきませんでした. 私の質問は、スケジュールされたタスクを見つけて取得し、キャンセルする方法でもあると思いますか?
誰か助けてくれませんか?どうもありがとう。
    @Configuration
    @EnableScheduling
    public class QuarterlyMetricReportScheduling{
        @Autowired
        QuarterlyMetricReportService qmrService;
        ScheduledFuture sf;
        CronTrigger trigger;
        int shutdownTimeout = 1 * 60 * 1000;//10 sec
        @Autowired
        QuarterlyMetricReportSchedulingService task;
        public ThreadPoolTaskScheduler threadPoolTaskScheduler() {
            ThreadPoolTaskScheduler tps = new ThreadPoolTaskScheduler();
        tps.setThreadNamePrefix("job");
        return tps;
        }
        public void changeTrigger(String cronExpression){
        System.out.println("change trigger to: " + cronExpression);
        trigger = new CronTrigger(cronExpression);
        start();
        }
        public void start(){
        ThreadPoolTaskScheduler  tps = new ThreadPoolTaskScheduler();
        tps.initialize();
        task = new QuarterlyMetricReportSchedulingService();
        tps.schedule(task, trigger);
        }
        public void stop() {
        ThreadPoolTaskScheduler tps = threadPoolTaskScheduler();
        //tps = new ThreadPoolTaskScheduler();
        //tps.setThreadNamePrefix("job");
        tps.initialize();
            task = new QuarterlyMetricReportSchedulingService();
        trigger = new CronTrigger("0 59 11 26 3 ?");
        tps.schedule(task, trigger);
        ScheduledExecutorService scheduledExecutorService = tps.getScheduledExecutor();
            try {
            //ScheduledServiceExecutor service = 
                //Executors.newSingleThreadScheduledExecutor();
            task = new QuarterlyMetricReportSchedulingService();
            ScheduledFuture future = scheduledExecutorService.scheduleWithFixedDelay(
            task, 1, 1, TimeUnit.MILLISECONDS);
            future.cancel(true);
            scheduledExecutorService.shutdown();
            }
    }