我想为多个请求运行一个计时器。如果我收到请求,我将在中间运行1000ms
的计时器,如果我收到另一个请求,我需要更新计时器。如果我没有收到1000ms
的任何请求,我需要退出该流程。
如何实现这样的计时器?我无法使用Timer任务执行操作。
答案 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通过之前被取消