java当中的定时器的4种使用方式
首先我们来介绍一下Java中的定时器。在Java中,我们通常使用定时器来执行定时任务,例如在定时轮询某个任务、定时刷新界面等等。Java中的定时器主要有以下4种使用方式:
1. Timer
Timer是Java中内置的定时器,可以用于执行定时任务。通过Timer对象,我们可以设置需要定时执行的任务并设定执行时间,例如在5秒后执行任务、每隔10秒执行一次任务等等。
下面是设置5秒后执行任务的示例代码:
Timer timer = new Timer();timer.schedule(new TimerTask() { @Override public void run() { // 需要执行的任务 }}, 5000); // 5000ms后执行任务2. ScheduledExecutorService
ScheduledExecutorService是Java中的另一个定时器,与Timer相似,也可以用于执行定时任务。与Timer不同的是,ScheduledExecutorService可以通过调用线程池中的线程来执行任务,因此相对更为灵活。
下面是设置每10秒执行一次任务的示例代码:
ScheduledExecutorService scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();scheduledExecutorService.scheduleAtFixedRate(new Runnable() { @Override public void run() { // 需要执行的任务 }}, 0, 10, TimeUnit.SECONDS); // 每10秒执行一次任务3. Quartz
Quartz是Java中比较流行的定时器框架,通过Quartz我们可以非常方便地实现定时任务的管理。与Timer和ScheduledExecutorService相比,Quartz提供的功能更为完整,例如支持任务调度、任务**等等。
下面是使用Quartz实现定时任务的示例代码:
// 创建任务工厂JobDetail jobDetail = JobBuilder.newJob(MyJob.class).build();// 创建触发器,设定执行时间Trigger trigger = TriggerBuilder.newTrigger() .startAt(new Date(System.currentTimeMillis() + 5000)) .withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(10).repeatForever()) .build();// 创建任务调度器Scheduler scheduler = new StdSchedulerFactory().getScheduler();scheduler.start();scheduler.scheduleJob(jobDetail, trigger);4. Spring Task
Spring Task是Spring框架中提供的定时任务框架,可以方便地实现定时任务的管理和调度。Spring Task通过注解和XML配置的方式,让我们可以快速地创建定时任务并设定执行时间,非常方便。
下面是使用Spring Task实现定时任务的示例代码:
@Scheduled(fixedDelay = 10000) // 每10秒执行一次任务public void myTask() { // 需要执行的任务}