java 如何触发timer
触发 Timer 的方法
在 Java 中,可以使用 java.util.Timer 或 java.util.TimerTask 来创建定时任务。以下是具体实现方式:
使用 Timer 和 TimerTask 的步骤
创建继承 TimerTask 的类,并实现 run 方法。run 方法中定义需要定时执行的任务逻辑。
import java.util.Timer;
import java.util.TimerTask;
public class MyTimerTask extends TimerTask {
@Override
public void run() {
System.out.println("Task executed at: " + System.currentTimeMillis());
}
}
初始化 Timer 对象并调度任务。schedule 方法可以设置延迟时间和执行间隔。
public class Main {
public static void main(String[] args) {
Timer timer = new Timer();
MyTimerTask task = new MyTimerTask();
// 延迟 1 秒后执行,之后每 2 秒执行一次
timer.schedule(task, 1000, 2000);
}
}
使用 ScheduledExecutorService 的替代方案
Java 5 之后推荐使用 ScheduledExecutorService,功能更强大且更灵活。
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class Main {
public static void main(String[] args) {
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
Runnable task = () -> {
System.out.println("Task executed at: " + System.currentTimeMillis());
};
// 延迟 1 秒后执行,之后每 2 秒执行一次
executor.scheduleAtFixedRate(task, 1, 2, TimeUnit.SECONDS);
}
}
关键参数说明
schedule(TimerTask task, long delay, long period):延迟delay毫秒后开始执行,之后每隔period毫秒重复执行。scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit):延迟initialDelay时间后开始执行,之后每隔period时间重复执行,时间单位由TimeUnit指定。
注意事项

Timer是单线程的,如果任务执行时间过长,可能会影响后续任务的调度。ScheduledExecutorService支持多线程,更适合复杂场景。- 使用完毕后需调用
timer.cancel()或executor.shutdown()释放资源。






