java ScheduledThreadPoolExecutor更改任务的时间

时间:2018-03-19 11:42:30

标签: java

我需要更改ScheduledThreadPoolExecutor的runnig任务的执行时间。

我喜欢

executor.schedule(new Runnable() {blablal},10,TimeUnit.SECONDS);

在登录阶段,我想为这个用户选择所有任务并执行一次。

无法更改ScheduledFuture的执行时间吗?

所以我最好选择做

之类的事情
synchronized(list) {
    Runnable a = new Runnable(){aaaa; list.remove(a)};
    executor.schedule(a,10,TimeUnit.SECONDS);
    list.add(a);
}

并在登录时

synchronize(list) {
    for (Runnable a : list) 
        a.run();
}
我是对的吗?

没有其他更好的选择,所以我可以避免所有这些同步?

可能是更改ScheduledFuture超时的直接方法

1 个答案:

答案 0 :(得分:2)

ScheduledExecutor上安排某些内容时,请保留Future处理的内容。您可以cancel未来并重新安排它,而不是尝试更改执行时间。