Springboot与任务
springboot-异步任务
要求,任务必须是2个以上,不然会造成单个方法阻塞,使用案例如下:
//1.首先给主配置类上标@EnableAsync
@RestController
public class HelloController {
@Autowired
HelloService helloService;
@GetMapping("/hello")
public String hello() throws InterruptedException {
//线程1执行
helloService.hello();
//线程2执行
return "喝了lo";
}
}
@Service
public class HelloService {
//标注在方法上表示这个是一个异步方法
@Async
public void hello(){
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("正在处理中。。。。。");
}
}
springboot-定时任务
关键注解:
@EnableScheduling 用来标注主配置类
@Scheduled 用来标注方法
[秒 ,分 ,时, 日, 月 , 星期]
[0 * * * * MON-FRI] 表示周一到周5的 所有整秒都执行方法,*代表周1-到周5任意时刻的每一分钟的0s都执行方法
@Scheduled(cron = "* * * * * MON-FRI")
public void say(){
System.out.println("hello world.....sheduled!~");
}
cron表达式除了精确值或者*之外,还可以写以下的类型:
字段 | 允许值 | 允许的特殊字符 |
---|---|---|
秒 | 0-59 | ,- * / |
分 | 0-59 | ,- * / |
小时 | 0-23 | ,- * / |
日期 | 1-31 | ,- * ?L W C |
月份 | 1-12 | ,- * / |
星期 | 0-7或者SUN-SAT,0、7是SUN | ,- * / L C # |
其中,
代表枚举类型
其中-
代表区间
其中*
代表任意
其中/
代表步长
其中?
代表日/星期冲突配置
其中L
代表最后
其中W
代表工作日
其中C
代表和calendar联系后计算的值
其中#
代表星期,4#2,第2个星期四