如何创建一个可以在Java中多次使用的计时器

时间:2015-04-21 10:19:29

标签: java timer timertask

我想为多个请求运行一个计时器。如果我收到请求,我将在中间运行1000ms的计时器,如果我收到另一个请求,我需要更新计时器。如果我没有收到1000ms的任何请求,我需要退出该流程。

如何实现这样的计时器?我无法使用Timer任务执行操作。

1 个答案:

答案 0 :(得分:1)

您可以使用ScheduledExecutorService

以下示例:

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;

public class A {

public static void main(String[] args) {
    Runnable  terminate = new Runnable() {
        @Override
        public void run() {
            System.out.println("Terminate task executed");
        }
    };
    ScheduledExecutorService  timer = Executors.newSingleThreadScheduledExecutor();
    ScheduledFuture<?> futureTask = timer.schedule(terminate, 1, TimeUnit.SECONDS);
    futureTask.cancel(true);
    System.out.println("Timer Canceled");
    futureTask = timer.schedule(terminate, 1, TimeUnit.SECONDS);
    futureTask.cancel(true);
    System.out.println("Timer Canceled");
  }

}

如果您运行它,您将看到终止任务永远不会运行,因为它在1 SEC通过之前被取消