三种定时任务:
1:Timer定时器
Timer定时器是Java内置的定时任务工具类,可以在指定的时间间隔内执行任务。
Timer中的任务是在Timer的任务线程中按照一定的时间间隔执行的,而TimerTask则是实际定时执行的任务。Timer和TimerTask都是线程安全的,可以被多个线程同时访问。常见的使用情况是:通过定时器进行重复执行周期性任务的情况,可以按照一定的延迟时间再次执行任务。
下面是一个示例代码:
import java.util.Timer;
import java.util.TimerTask;
public class TimerExample {
public static void main(String[] args) {
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("定时任务执行!");
}
};
// 延迟1秒后开始执行任务,每隔2秒执行一次
timer.schedule(task, 1000, 2000);
}
}
2:ScheduledExecutorService定时任务
ScheduledExecutorService是Java提供的高级定时任务框架,可以在给定的延迟之后或定期执行一个任务。可以周期性执行任务.
下面是一个示例代码:
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class ScheduledExecutorExample {
public static void main(String[] args) {
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
Runnable task = new Runnable() {
@Override
public void run() {
System.out.println("定时任务执行!");
}
};
// 延迟1秒后开始执行任务,每隔2秒执行一次
executor.scheduleAtFixedRate(task, 1, 2, TimeUnit.SECONDS);
}
}
3:Quartz定时任务
Quartz是一个常用的Java定时任务框架,它提供了很多定时任务相关的功能。Quartz允许用户在固定的时间间隔内执行任务或只执行一次任务。Quartz使用特殊的cron表达式来规定调度时间,同时支持集群和集中式管理。
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
public class QuartzExample {
public static void main(String[] args) throws SchedulerException {
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
JobDetail job = JobBuilder.newJob(MyJob.class)
.withIdentity("myJob", "group1")
.build();
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("myTrigger", "group1")
.startNow()
.withSchedule(SimpleScheduleBuilder.repeatSecondlyForever(2))
.build();
scheduler.scheduleJob(job, trigger);
scheduler.start();
}
public static class MyJob implements Job {
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
System.out.println("定时任务执行!");
}
}
}