Java ScheduledExecutorService,如何在不停止执行器的情况下停止操作?

Java ScheduledExecutorService,如何在不停止执行器的情况下停止操作?,java,executors,Java,Executors,我有以下代码: ScheduledExecutorService scheduledExecutor; ..... ScheduledFuture<?> result = scheduledExecutor.scheduleWithFixedDelay( new SomethingDoer(),0, measurmentPeriodMillis, TimeUnit.MILLISECONDS); scheduledExecutor服务scheduledExecutor; ..

我有以下代码:

ScheduledExecutorService scheduledExecutor;
.....
ScheduledFuture<?> result = scheduledExecutor.scheduleWithFixedDelay(
    new SomethingDoer(),0, measurmentPeriodMillis, TimeUnit.MILLISECONDS);
scheduledExecutor服务scheduledExecutor;
.....
ScheduledFuture结果=scheduledExecutor.scheduleWithFixedDelay(
new SomethingDoer(),0,measurementperiodmillis,TimeUnit.ms);
在某个事件之后,我应该停止操作,该操作在
SomethingDoer
run()方法中声明,该方法实现了
Runnable

我该怎么做?我不能关闭executor,我应该撤销我的定期任务。我可以为此使用
result.get()
吗?如果可以,请告诉我它将如何工作。

您可以从您的对象使用该方法。一旦取消,将不再执行其他任务

如果要停止当前正在运行的任务,需要对
run
方法进行编码,使其对中断敏感,并将
true
传递给
cancel()
方法以请求中断。

使用
result.cancel()
ScheduledFuture
是任务的句柄。您需要取消此任务,它将不再执行

实际上,
cancel(boolean-mayinterruptfrunning)
是签名,将其与
true
参数一起使用将导致当前运行的执行线程被
interrupt()
调用中断。如果线程正在等待可中断的阻塞调用,如
Semaphore.acquire()
,这将引发中断异常。请记住,
cancel
只会确保任务停止执行后不再执行