东莞网络优化,宁波seo咨询,个人网银登录入口,江苏无锡今天的最新发布消息定时任务#xff0c;其实在我们开发过程中经常会碰到的一个场景#xff0c;比如#xff0c;我现在想要给某些用户定时的发送一些短信呀#xff0c;邮件呀什么的#xff0c;也可以用来定时的检查或者监测我们对一些参数的处理。玩的花的可以用来帮我我们进行网页签到#…定时任务其实在我们开发过程中经常会碰到的一个场景比如我现在想要给某些用户定时的发送一些短信呀邮件呀什么的也可以用来定时的检查或者监测我们对一些参数的处理。玩的花的可以用来帮我我们进行网页签到甚至隔一段时间爬取网页的某些数据具体还得看你怎么用这里只提供一个定时任务案例具体实施得看你想怎么用了。
使用Scheduled创建一个定时任务
在Spirng Boot中创建一个定时任务我们可以通过Spring Boot的自带的注解来创建一个简单的定时任务实现每隔一段时间输出当前的时间。
引入相关依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdscopeprovided/scope/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency在我们的Spring Boot中的主类加入EnableScheduing注解启动定时任务配置
EnableScheduling
SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}接下来我们可创建一个简单的定时任务。
Slf4j
Component
AllArgsConstructor
public class ScheduledTasks {private static final SimpleDateFormat dateFormat new SimpleDateFormat(HH:mm:ss);//创建一个定时任务执行时间单位毫秒Scheduled(fixedRate 5000)public void reportCurrentTime() {log.info(现在时间 dateFormat.format(new Date()));}Scheduled(cron 0 0 12 * * ?)public void reportScheduled(){log.info(每天中午12点执行);}Scheduled(fixedDelay 5000) // 任务执行完毕后延迟5秒再执行下一次public void reportTest(){log.info(任务执行完毕后延迟5秒后再执行下一次);}}在这里插入图片描述
接下来我们可以看看Scheduled的参数
Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})
Retention(RetentionPolicy.RUNTIME)
Documented
Repeatable(Schedules.class)
public interface Scheduled {String CRON_DISABLED -;String cron() default ;String zone() default ;long fixedDelay() default -1L;String fixedDelayString() default ;long fixedRate() default -1L;String fixedRateString() default ;long initialDelay() default -1L;String initialDelayString() default ;
}String cron() default ; 用于指定任务的执行时区。它是一个字符串表示任务应该在哪个时区执行。例如Scheduled(cron 0 0 12 * * ?, zone America/New_York)表示任务在美国纽约时区的中午12点执行。 String zone() default ;用于指定任务的执行时间表达式。它是一个字符串遵循Cron表达式的语法规则。Cron表达式由6个或7个字段组成分别表示秒、分钟、小时、日期、月份、星期和年份可选。例如0 0 12 * * ?表示每天中午12点执行任务。
long fixedDelay() default -1L;上一次执行结束到下一次执行开始的间隔时间单位毫秒 ms
String fixedDelayString() default ; 与fixedDelay类似用于指定任务的执行间隔时间。同样fixedDelayString接受一个字符串参数可以使用更友好的时间表达方式。 long fixedRate() default -1L; 用于指定任务的执行间隔时间毫秒。它表示每隔指定的时间执行一次任务不考虑任务的执行时间。例如Scheduled(fixedRate 5000)表示每隔5秒执行一次任务。 String fixedRateString() default ; 与fixedRate类似用于指定任务的执行间隔时间。同样fixedRateString接受一个字符串参数可以使用更友好的时间表达方式。 long initialDelay() default -1L; 用于指定任务的初始延迟时间毫秒。它表示在应用启动后延迟指定的时间后开始执行第一次任务。例如Scheduled(initialDelay 10000, fixedRate 5000)表示在应用启动后延迟10秒开始执行第一次任务然后每隔5秒执行一次任务。
String initialDelayString() default ; 与initialDelay类似用于指定任务的初始延迟时间。不同之处在于initialDelayString接受一个字符串参数可以使用更友好的时间表达方式如10s表示10秒5m表示5分钟1h表示1小时等等。
注意Scheduled使用过多也是会存在问题的具体有以下问题 依赖于应用程序的生命周期Scheduled注解是基于应用程序的生命周期来触发任务执行的。这意味着如果应用程序停止或重启所有的定时任务也会被中断。因此如果你的应用程序需要保证任务的连续执行可能需要考虑其他的解决方案。 单线程执行默认情况下Scheduled注解使用单线程执行定时任务。这意味着如果一个任务的执行时间较长会影响其他任务的执行。如果你的应用程序需要同时执行多个耗时任务可能需要考虑使用线程池或其他并发机制来提高任务的执行效率。 无法动态修改任务配置一旦使用Scheduled注解配置了定时任务任务的执行时间和规则就固定了无法在运行时动态修改。如果你的应用程序需要根据外部条件或配置来调整任务的执行时间可能需要考虑其他的解决方案。 缺乏集中管理当应用程序中存在多个定时任务时使用Scheduled注解会导致任务的配置分散在不同的方法或类中不便于集中管理和监控。如果你需要对定时任务进行集中管理和监控可能需要考虑使用专门的定时任务框架或工具。