三种定时任务:
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() {@Overridepublic 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() {@Overridepublic 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 {@Overridepublic void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {System.out.println("定时任务执行!");}}
}