Spring Scheduled定时任务处理

         Scheduled只适合简单的计划任务,不能处理分布式计划任务。优势在于它是spring框架提供的计划任务,开发简单,执行效率比较高。但是在计划任务过多的时候,可能出现阻塞,崩溃,延迟启动等问题。

         Scheduled定时任务是spring3.0版本之后自带的一个定时任务功能,其所属的Spring资源包:spring-context-support,准确的说应该是spring-context。所以使用Scheduled定时任务机制时,需要在工程中依赖对应的资源:

<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-context-support</artifactId>
</dependency>

        注解@Scheduled中,属性cron非常重要。cron用于定义计划任务的执行策略,定义在什么时间执行计划任务方法。我们可以通过cronEL来赋值。

        cron表达式的语法:   seconds minutes hours day month week [year]

       不推荐使用7节的cron表达式,因为cron表达式的标准格式是6节的。

       如果想在spring boot中,只需要在启动类上加上@EnableScheduling即可。

       某次计划任务发生异常,不会导致整个计划任务体系崩溃。这是因为计划任务在启动时,由调度线程从spring专门为Schedule提供的线程池中分配线程,用于执行计划任务,因此是计划任务是多线程执行的。如果计划任务发生异常,只是执行当前任务的线程发生异常,而不是计划任务调度线程发生异常,因此不会影响其它任务。

       此外,如果上一个计划任务没有执行完毕,那么调度器不会立即分派线程去执行下一个定时任务,直到上一个计划任务执行完毕。

发布了45 篇原创文章 · 获赞 13 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/miaomiao19971215/article/details/90552705
今日推荐