使用ScheduledExecutorService代替Timer吧
时间: 2023-12-16 18:27:45 浏览: 138
使用ScheduledExecutorService代替Timer的原因是,当Timer运行多个TimerTask时,只要其中一个TimerTask没有捕获抛出的异常,其他任务便会自动终止运行,而使用ScheduledExecutorService则没有这个问题。另外,ScheduledExecutorService支持多线程并发处理定时任务,而Timer只能按照顺序依次执行任务。
下面是使用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 executor = Executors.newScheduledThreadPool(1);
executor.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
System.out.println("Hello, world!");
}
}, 0, 1, TimeUnit.SECONDS);
}
}
```
上述代码中,我们使用ScheduledExecutorService创建了一个线程池,并使用scheduleAtFixedRate方法定时执行任务。其中,第一个参数是要执行的任务,第二个参数是延迟执行的时间,第三个参数是任务执行的间隔时间,第四个参数是时间单位。
阅读全文