Java 如何在scheduledExecutorService中取消/终止任务scheduledExecutorService?

Java 如何在scheduledExecutorService中取消/终止任务scheduledExecutorService?,java,Java,我有一个实现,我需要每小时设置一个时间表,以使IDs成为进程,并每分钟安排一次。如何在scheduledExecutorServiceSecond中设置的每小时取消scheduledExecutorServiceSecond中的那些任务 public class Handler { private static final ScheduledExecutorService scheduledExecutorServiceFirst = MDScheduledExe

我有一个实现,我需要每小时设置一个时间表,以使IDs成为进程,并每分钟安排一次。如何在
scheduledExecutorServiceSecond
中设置的每小时取消
scheduledExecutorServiceSecond
中的那些任务

   public class Handler {
    
        private static final ScheduledExecutorService scheduledExecutorServiceFirst = MDScheduledExecutorService.wrap(
                new ScheduledThreadPoolExecutor(1), "first-thread-%d");
        private static final ScheduledExecutorService scheduledExecutorServiceSecond = MDScheduledExecutorService.wrap(
                new ScheduledThreadPoolExecutor(2), "second-thread-%d");

       //assuming this is the main method to call
       private void main() {
          scheduledExecutorServiceFirst.scheduleAtFixedRate(new ActionServiceImpl(db), 1, 3600, SECONDS);
       }

      private class ActionServiceImpl implements Runnable {
        @Override
        public void run() {
           List<String> ids = getFromDB();
           ids.forEach(id -> {
              scheduledExecutorServiceSecond.scheduleAtFixedRate(new PaperImpl(id), 1, 60, SECONDS);
           });

        }
      }
   }
公共类处理程序{
私有静态最终ScheduleXecutorService ScheduleXecutorServiceFirst=mdScheduleXecutorService.wrap(
新ScheduledThreadPoolExecutor(1),“第一个线程-%d”);
私有静态最终ScheduleXecutorService ScheduleXecutorServiceSecond=mdScheduleXecutorService.wrap(
新ScheduledThreadPoolExecutor(2),“第二个线程-%d”);
//假设这是要调用的主要方法
私有void main(){
scheduledExecutorServiceFirst.scheduleAtFixedRate(新ActionServiceImpl(db),1360秒);
}
私有类ActionServiceImpl实现可运行{
@凌驾
公开募捐{
列表ID=getFromDB();
id.forEach(id->{
scheduledExecutorServiceSecond.scheduleAtFixedRate(新PaperImpl(id),1,60,秒);
});
}
}
}

我不确定我是否完全理解您的目的,但是您可以将
scheduleAtFixedRate()
返回的
ScheduledFuture
存储在
ActionServiceImpl
的实例中,当调用
run()
时,您可以调用
cancel()
在计划新任务之前,请在上面单击它。@thomas您的意思是我需要存储一个计划未来的列表?然后一个接一个地取消?基本上是的,取消所有预定的期货,然后创建一个新的。当然,您也可以只保留已经存在的一个,用于以前处理过的ID。