使用ScheduledExecutorService代替Timer实现动态启动定时任务
时间: 2023-11-29 12:46:01 浏览: 110
以下是使用ScheduledExecutorService代替Timer实现动态启动定时任务的代码示例:
```java
import java.util.concurrent.Executors;import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class ScheduledExecutorServiceDemo {
public static void main(String[] args) {
ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(1);
Runnable task = new Runnable() {
@Override
public void run() {
System.out.println("Task executed at " + System.nanoTime());
}
};
int initialDelay = 0;
int period = 1;
scheduledExecutorService.scheduleAtFixedRate(task, initialDelay, period, TimeUnit.SECONDS);
}
}
```
上述代码中,我们首先创建了一个ScheduledExecutorService对象,然后定义了一个Runnable任务,该任务会在每次执行时输出当前时间。接着,我们设置了任务的初始延迟时间和执行周期,并使用scheduleAtFixedRate方法将任务提交给ScheduledExecutorService执行。
使用ScheduledExecutorService代替Timer的好处在于,ScheduledExecutorService可以更好地处理异常情况,避免因为一个任务出现异常而导致其他任务无法执行的问题。
阅读全文