代码之家  ›  专栏  ›  技术社区  ›  vjk

执行服务变更延迟

  •  1
  • vjk  · 技术社区  · 12 年前
    delay = 30;             
    
    scheduler = Executors.newSingleThreadScheduledExecutor();
                scheduler.schedule(new Runnable() {
                    public void run() { .... }
                }, delay , TimeUnit.SECONDS);
    

    如果在稍后某个时间点将延迟更改为60,则作业计划的时间是什么时候。30秒还是60秒?。

    如果我们不能改变延迟,最好的办法是什么( scheduler.shutdown() )以及以新的延迟调度作业。还有其他方法吗?

    1 回复  |  直到 12 年前
        1
  •  2
  •   Sotirios Delimanolis    12 年前

    获取 ScheduledFuture 来自 ScheduledExecutorService#schedule(..) 呼叫

    当您需要重新安排时,请致电 cancel() 计划的未来 并使用新的 delay .

    您的任务可能需要以能够处理中断的方式实现。