没有合适的资源?快使用搜索试试~ 我知道了~
Spring的 Scheduled任务调度.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 9 浏览量
2022-06-19
16:00:09
上传
评论
收藏 249KB DOCX 举报
温馨提示
试读
16页
说明:@Scheduled 注解用于标注这个方法是一个定时任务的方法,有多种配置可选。cron支持cron表达式,指定任务在特定时间执行;fixedRate以特定频率执行任务;fixedRateString以string的形式配置执行频率。
资源详情
资源评论
资源推荐
Spring 的 Scheduled 任务调度
一. 定时任务实现方式
定时任务实现方式:
Java 自带的 java.util.Timer 类,这个类允许你调度一个 java.util.TimerTask 任务。
使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行。一般
用的较少,这篇文章将不做详细介绍。
使用 Quartz,这是一个功能比较强大的的调度器,可以让你的程序在指定时间执
行,也可以按照某一个频度执行,配置起来稍显复杂,有空介绍。
使用 Spring 的@Scheduled 注解配合@EnableScheduling 一起使用。
SpringBoot 自带的 Scheduled,可以将它看成一个轻量级的 Quartz,而且使用起
来比 Quartz 简单许多,本文主要介绍。
说明:@Scheduled 注解用于标注这个方法是一个定时任务的方法,有多种配
置可选。cron 支持 cron 表达式,指定任务在特定时间执行;fixedRate 以特定
频率执行任务;fixedRateString 以 string 的形式配置执行频率。
定时任务执行方式:
单线程(串行)
多线程(并行)
二. 创建定时任务
2.1、Spring boot 中串行调度
在 Spring boot 中自带了 Seheduled,实现起来很方便,只需要在需要调度的方
法上增加注解即可。如下:
package com.dxz.demo.schedule;
import java.time.LocalDateTime;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
@Service
//@EnableScheduling 可以省略
public class PrintJob {
@Scheduled(initialDelay=3000, fixedDelay = 10000)
public void print() {
Thread current = Thread.currentThread();
System.out.println(LocalDateTime.now() + " thread-name:" +
current.getName() + ": 60 print");
}
}
结果:
2.2、Spring boot 中并行调度
继承 SchedulingConfigurer 类并重写其方法即可,如下:
package com.dxz.demo.schedule;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
@Configuration
@EnableScheduling
public class ScheduleConfig implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.setScheduler(taskExecutor());
}
@Bean(destroyMethod = "shutdown")
public Executor taskExecutor() {
return Executors.newScheduledThreadPool(10);
}
}
结果:
剩余15页未读,继续阅读
小兔子平安
- 粉丝: 209
- 资源: 1940
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0