1 @Scheduled是不是必须放在spring管理的bean里?譬如有@Component @Controller @Service 注解的类里,放其他地方不起作用?
2 多线程任务下,例如下面所示,doTask1和doTask2之间可以异步进行,但是假如doTask1的上一次任务还没完成,5秒时间已过,下一次任务来了,是会开新线程进行还是等待上一次任务完成再进行?也就是说doTask1自己本身的任务之间是异步的还是同步的?如果是异步,如何同步?
@Componenet
@EnableAsync
class MyClass{
@Async
@Scheduled(cron = "0/5 * * * * ? ")
void doTask1{
...
}
@Async
@Scheduled(cron = "0 0/3 * * * ?")
void doTask2{
...
}
1,因为 @Scheduled 是spring的一个功能,要使用需要被扫描到才行行,所以才需要@Component等注解。
2,定时任务有两种,一种是间隔多久执行一次,这种必须要等到上一个任务执行完毕才会开始下一个任务,另一种是在特定的时间执行,比如每小时的01分执行,即使上一个任务没有完成也会开始下一个任务。