企业开发中,咱们有时候会须要用到定时任务,spring已经为咱们提供了相关的的功能,并且很是之简单,咱们采用注解就能使用,下面就是一个简单的demojava
先介绍一下开发环境:web
依赖包的话,其实springboot引入web包就行了,可是避免有人不知道,这里仍是贴出来一份spring
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
包咱们引入进来了,而后就是注解demo啦springboot
/** * 项目名:SpringBootDemo * 建立人:贺小五 * 建立时间:16/12/30 上午11:34 * 类名:ScheduleDemo * 类描述: * spring定时器测试demo */ @EnableScheduling @Component public class ScheduleDemo { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); /** * fixedRate多久执行一次,单位:毫秒 * initialDelay 延迟容器启动后执行,单位:毫秒 */ @Scheduled(fixedRate = 10000,initialDelay = 2000) public void scheduleTest1(){ System.out.println("10s执行一次--->"+sdf.format(new Date())); } /** * * fixedDelay在指定的时间执行一次,单位:毫秒 * 在建立后会执行一次,在第一次执行后,会每隔5S执行一次 */ @Scheduled(fixedDelay = 5000) public void scheduleTest2(){ System.out.println("5s执行一次--->"+sdf.format(new Date())); } /** * cron表达式,下面表示,每隔1s执行一次,具体的能够自行定义 */ @Scheduled(cron = "0/1 * * * * ? ") public void scheduleTest3(){ System.out.println("5s执行一次--->"+sdf.format(new Date())); } }
执行boot的启动类,而后咱们就能够观看打印结果了:ide
咱们会发现,10S调用一次的,跟5S调用的会差2秒,是由于设定了第一次调用的延迟时间为2Sspring-boot
下面是一些注解的注释:工具
- @EnableScheduling 表示开启任务调度,用于类上的注解,该注解能够使用在boot的启动类,也能够使用在schedule配置类上
- @Scheduled 表示任务调用方法,用于方法上;
好了,上面就是一个简单的任务调度器,很简单的一个demo,具体怎么使用,我的根据业务去就行了,下面在介绍一下,@Scheduled注解内参数的定义:开发工具
@Scheduled注解下有一些参数,例如 fixedDelay,fixedRate...等,我这大概介绍下测试
- cron 表达式,能够指定某个时刻执行,具体的能够使用搜索引擎,这里就不详细介绍了
- zone 表示时区,默认是使用本地的时区,有时候可能须要国外的,能够使用 java.util.TimeZone时区类下的getTimeZone获取须要的时区
- fixedDelay 表示上次执行完毕到下次执行开始间隔数,单位:毫秒
- fixedDelayString 同上,只不过填写的是字符串,不是long类型
- fixedRate 表示上次执行完毕到下次执行开始的间隔数,单位:毫秒
- fixedRateString 同上,只不过填写的是字符串,不是long类型
- initialDelay 推迟第一次执行以前的毫秒数在fixedRate或fixedDelay的任务,单位:毫秒
- initialDelayString 同上,只不过填写的是字符串,不是long类型
到这,文章就结束了!搜索引擎
以上,均为本人测试而得出的结果,可能会有出入,或者错误,欢迎指正
欢迎转载,请注明出处跟做者,谢谢!