【本文将介绍两种定时器使用方式】
方式一:非常简便的定时器使用,Spring框架自带定时器
步骤1:在主启动类上开启定时器
@SpringBootApplication
@EnableScheduling
public class QuartzTestApplication {
public static void main(String[] args) {
SpringApplication.run(QuartzTestApplication.class, args);
}
}
步骤2:书写定时任务类
package com.offcn.quartztest;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.Date;
//需要将该任务类添加到容器中
@Component
public class QuartzTask {
//每隔1分钟执行1次
@Scheduled(cron = "0 0/1 * * * *")
public void quartzTask(){
System.out.println("定时任务:"+new Date());
}
}
方式二:分工明确的定时器
步骤一:添加定时器依赖
<!--定时器的依赖-->
<!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.0</version>
</dependency>
步骤二:主启动类上开启定时任务
@SpringBootApplication
@EnableScheduling
public class QuartzTestApplication {
public static void main(String[] args) { SpringApplication.run(QuartzTestApplication.class, args);
}
}
步骤三:编写任务类
package com.offcn.job;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.Date;
@Component
public class ImportJob implements Job {
@Override
public void execute(JobExecutionContext jobExecutionContext) {
System.out.println("任务");
}
@Scheduled(cron = " * * * * * *")
public void importData(){
System.out.println(new Date()+":任务");
}
}
步骤四:编写触发器
package com.offcn.quart;
import com.offcn.work.ImportJob;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
import java.util.Date;
//创建调度类
public class WorkQuart {
public static void main(String[] args) throws InterruptedException, SchedulerException {
Scheduler scheduler = getScheduler();
scheduler.scheduleJob(getJobDetail() , getTrigger());
}
//创建工作细节
public static JobDetail getJobDetail(){
// job 唯一标识 test.test-1
JobKey jobKey = new JobKey("importJob" , "job-1");
// 创建工作细节
JobDetail jobDetail = JobBuilder.newJob(ImportJob.class).withIdentity(jobKey).build();
return jobDetail;
}
//创建一个调度器
public static Scheduler getScheduler() throws SchedulerException {
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
// 开启调度器
scheduler.start();
return scheduler;
}
//创建一个触发器
public static Trigger getTrigger(){
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger-1" , "job-1")
// 延迟一秒执行
.startAt(new Date(System.currentTimeMillis() + 1000))
// 每隔一秒执行 并一直重复
.withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(1).repeatForever()).build();
return trigger;
}
}
java定时器时间格式 java定时器规则
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
java定时器事务设置 java定时器规则
java定时器的使用 schedule(TimerTask task, Date time)设定指定任务task在指定时间time运行。 cancel()方法结束这个定
java定时器事务设置 java java定时器 抽象类 -
java 定时器 跳出定时器 java定时器暂停
一、定时器定时器在操作系统中地位很高,可以用来控制一切周期性行为。定时器采用中断的形式,工作原理如下图: 二、定时器优化以前我在做单片机项目的时候,总感觉定时器中断数量太少(一般是两个),通过这次《30天》操作系统的学习,我才意识到不是定时器少,而是自己的编程思路有问题。理论上讲,你可以实现任何时间粒度的定时器中断编程,无非就是在基本时钟中断频率的基础上用倍数来获取任意时间间隔
java 定时器 跳出定时器 java定时器的使用(timer) 在定时器中返回给视图的值 时间间隔 图层