delay = 30;
scheduler = Executors.newSingleThreadScheduledExecutor();
scheduler.schedule(new Runnable() {
public void run() { .... }
}, delay , TimeUnit.SECONDS);
如果延迟在稍后的某个时间点更改为60,则何时安排作业。在30秒或60秒?
如果我们无法改变延迟,那么最好的方法是什么。我打算调用shutdown(scheduler.shutdown()
)并以新的延迟调度作业。还有其他方法吗?
答案 0 :(得分:1)
从ScheduledFuture
电话中获取ScheduledExecutorService#schedule(..)
。
如果您需要重新安排,请致电cancel()
上的ScheduledFuture
,然后使用新的delay
重新提交任务。
您的任务可能需要以可以处理中断的方式实现。