我正在寻找有关如何管理多个计时器任务的指导。我希望能够动态创建计时器,然后当每个计时器完成时,它会自行重置。
例子:
计时器 1 - 执行动作 x - 重置为在 30 分钟内再次执行动作 x
计时器 2 - 执行动作 y - 重置为在 10 分钟内再次执行动作 y
您想要的是ScheduledExecutorService。
它允许您安排任务在给定时间或以给定速率运行。
以下代码创建一个计时器,并在初始延迟 500 毫秒后每 1000 毫秒执行一次。您可以通过这种方式轻松定义两个或多个计时器。
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println( "exec" );
}
};
new Timer().scheduleAtFixedRate( task, 500, 1000 );
也许值得回顾一下Quartz Enterprise Job Scheduler
Quartz 是一个功能齐全的开源作业调度系统,可以与几乎任何 J2EE 或 J2SE 应用程序集成或一起使用——从最小的独立应用程序到最大的电子商务系统。Quartz 可用于创建简单或复杂的调度,以执行数十、数百甚至数万个作业;任务被定义为标准 Java 组件或 EJB 的作业。