Java 在不活动后计划任务(可刷新)

Java 在不活动后计划任务(可刷新),java,Java,我正在寻找一种在一段时间后安排任务的方法,但是如果发生了什么事情,我需要能够延迟任务。 比如说 myMethod() { some code... new Timer().schedule(new TimerTask(){ @Override public void run(){ LOGGER.info("close connexion"); } },1000

我正在寻找一种在一段时间后安排任务的方法,但是如果发生了什么事情,我需要能够延迟任务。 比如说

myMethod() {
    some code...

    new Timer().schedule(new TimerTask(){
            @Override
            public void run(){
                LOGGER.info("close connexion");
            }
        },1000);

}
如果我在myMethod()中再次出现,我需要在“run”中重新安排任务。 怎么办?

解决方案#1

请参阅java 1.5中提供的,它为您提供了方法
scheduleWithFixedDelay
——因此它只在完成任务后重新安排任务。另一种在方法末尾重新安排任务的方法(使用
schedule
method)


解决方案#2-Spring中存在几乎相同的方法签名,但您可以借助带注释的服务方法来实现。

将其移动到单独的方法中并调用该方法?使用
ScheduledExecutorService
而不是
TimerTask
。您可以使用从
schedule()
返回的
ScheduledFuture
取消并重新安排任务,只要您想延迟它。