![](/img/trans.png)
[英]Stopping ScheduledExecutorService when button action is performed in the UI
[英]ScheduledExecutorService, how to stop action without stopping executor?
我有以下代码:
ScheduledExecutorService scheduledExecutor;
.....
ScheduledFuture<?> result = scheduledExecutor.scheduleWithFixedDelay(
new SomethingDoer(),0, measurmentPeriodMillis, TimeUnit.MILLISECONDS);
在发生一些事件之后,我应该停止操作,该操作在SomethingDoer
run()
方法中声明,该方法实现了Runnable
。
我怎样才能做到这一点? 我无法关闭执行器,只能撤消我的定期任务。 我可以result.get()
使用result.get()
吗? 如果可以的话,请告诉我它如何工作。
使用result.cancel()
。 ScheduledFuture
是您的任务的句柄。 您需要取消此任务,它将不再执行。
实际上, cancel(boolean mayInterruptIfRunning)
是签名,将其与true
参数一起使用将导致当前正在运行的执行线程被interrupt()
调用interrupt()
。 如果线程正在等待阻塞的可中断调用(例如Semaphore.acquire()
,则将抛出一个中断的异常。 请记住, cancel
将确保仅在任务停止执行后不再执行该任务。
您可以从ScheduledFuture
对象使用cancel()
方法。 一旦取消,将不再执行其他任务。
如果要停止当前正在运行的任务,则需要对run
方法进行编码,以使其对中断敏感并将true
传递给cancel()
方法以请求中断。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.