Spring 中,@Scheduled 注解的使用方法

1,395 total views, 3 views today

Spring 提供了@Scheduled 注解,良好的解决了定时任务的需求,它的实现本质是基于 java 中的 ScheduledExecutorService 类的 schedule 方法。

@Scheduled 注解标注在方法上,它是 Spring 实现的一种计划任务,可以支持如下几种方式运行:

固定时间频率运行方法。

延迟指定的时间运行方法。

按照 cron 表达式定义的时间方式运行方法。(cron 表达式的基本概念,自行查找相关材料。)

使用@Scheduled 注解的时,按如下步骤:

1. 配置文件中,打开运行执行 Schedule 任务的开关,使用注解

@EnableScheduling。

2. 将某个类的方法标注@Scheduled。

3. 启动 Spring 容器应用。

使用注解@EnableScheduling。

在方法上标注@Scheduled。

启动 Spring 容器。

结果, 每隔一秒执行一次函数。同一个线程执行:

默认单线程运行

@Schduled 默认是基于单线程执行, 所有的定时任务串行执行,这就可能导致运行时间久的任务,会影响到下一个运行周期的任务。参考下图了解影响点。

 

图片来自于网络(https://blog.csdn.net/applebomb/article/details/52400154)

如果需要基于多线程执行,则需要配置。可以在配置文件中加入如下代码:

如上的配置用于设置线程池,这样多个定时任务就可以并行执行。

基于注解的配置方式,就是在容器中,增加一个 ScheduledThreadPoolExecutor 类型的实例即可。

修改一下运行任务的代码,运行 2 种任务。

运行结果如下:

 

原创文章,转载请注明出处!http://www.javathings.top/spring中scheduled注解的使用方法/

About: wusq


发表评论

电子邮件地址不会被公开。 必填项已用*标注