能用ScheduledFuture实现 Java实现 20秒内重复调用某方法 ,超过20秒停止 详细代码实现 中文
时间: 2024-03-12 18:50:02 浏览: 138
Java计时器StopWatch实现方法代码实例
当您需要在Java中实现某个方法在一定时间内重复调用,但同时需要在超过一定时间后停止重复调用时,您可以使用ScheduledFuture。
下面是一个示例代码,该代码会在20秒内每1秒重复调用run()方法,超过20秒后停止调用:
```
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
public class ScheduledFutureDemo {
private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
private ScheduledFuture<?> future;
public void startTask() {
final Runnable task = new Runnable() {
int count = 0;
public void run() {
count++;
System.out.println("Task count: " + count);
if (count == 20) {
stopTask();
}
}
};
future = scheduler.scheduleAtFixedRate(task, 0, 1, TimeUnit.SECONDS);
}
public void stopTask() {
future.cancel(false);
scheduler.shutdown();
}
public static void main(String[] args) {
ScheduledFutureDemo demo = new ScheduledFutureDemo();
demo.startTask();
}
}
```
在这个示例中,我们首先创建了一个ScheduledExecutorService来管理定时任务。然后我们定义了一个startTask()方法,该方法创建了一个Runnable对象task并将其传递给scheduler.scheduleAtFixedRate()方法,该方法会在0秒后开始执行task,然后每1秒重复调用task,直到任务执行了20次。
在task的run()方法中,我们对任务执行的次数进行计数,并在达到20次时调用stopTask()方法停止任务。在stopTask()方法中,我们调用future.cancel()方法取消任务的重复调用,并调用scheduler.shutdown()方法关闭ScheduledExecutorService。
最后,在main()方法中,我们实例化了ScheduledFutureDemo类并调用了startTask()方法来启动定时任务。
阅读全文