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
只会确保任务停止执行后不再执行