热乎乎的面经:Spring中Scheduled和Async两种调度方式有啥区别?

最近有小伙伴出去面试,回来跟我说:冰河,我去XXX公司面试,面试官竟然问了我一个关于Spring中Scheduled和Async调度的问题,我竟然没回答上来,你能不能写一篇关于这个问题的文章呢?我:可以,安排上!于是便有了这篇文章。

好了,我们开始正文吧~~
Spring调度的两种方式

Spring提供了两种后台任务的方法,分别是:

调度任务,@Schedule
异步任务,@Async

当然,使用这两个是有条件的,需要在spring应用的上下文中声明task:annotation-driven/当然,如果我们是基于java配置的,需要在配置类上加@EnableScheduling和@EnableAsync注解,例如,下面的代码片段。

@EnableScheduling@EnableAsyncpublic class WebAppConfig { …}

除此之外,还是有第三方库可以调用的,例如Quartz,文章最后我们再简单提下Quartz。
@Schedule调度

先看下@Schedule怎么调用再说。

public final static long ONE_DAY = 24 * 60 * 60 * 1000;public final static long ONE_HOUR = 60 * 60 * 1000; @Scheduled(fixedRate = ONE_DAY)public void scheduledTask() { System.out.println(" 我是一个每隔一天就会执行一次的调度任务");} @Scheduled

你可能感兴趣的:(spring,java,面试,mybatis,webpack)