java的后台任务调度@Schedule和@Async

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

本文由我司收集整编,推荐下载,如有疑问,请与我司联系
java 的后台任务调度@Schedule 和@Async
2015/08/18 2322 调度任务;@Schedule 异步任务;@Async 当然,使用这
两个是有条件的,需要在spring 应用的上下文中声明task:annotation-driven/ 当然,如果我们是基于java 配置的,需要在配置哪里加多EnableScheduling
@EnableSchedulingpublic class WebAppConfig { ....先看下@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(fixedDelay = ONE_HOURS) public void scheduleTask2() { System.out.println(“我是一个执行完后,隔一小时就会执行的任务”);
@Scheduled(cron = “0 0/1 * * * ? “) public void ScheduledTask3() { System.out.println(“我是一个每隔一分钟就就会执行的任务”); } 需要注意的
关于最后一个,在指定时间执行的任务,里面使用的是Cron 表达式,同时我们
看到了两个不一样的面孔fixedDelay fixedRate,前者表示在指定间隔,运行程序,
例如这个程序在今晚九点运行程序,跑完这个方法后的一个小时,就会再执行一
次,而后者fixedDelay 者是指,这个函数每隔一段时间就会被调用(我们这里设置
的是一天),不管这个方法是在运行还是结束了。

我们在serviceImpl 类写这些调度任务时候,也需要在这些我们定义的serviceInterface 的借口中写多这个接口,要不然会爆***—— but not found in any interface(s) for bean JDK proxy. Either pull the method up to an interface or @Async 有时候我们会调用一些特殊的任务,任务会比较耗时,重要的是,我
们不管他返回的后果。

这时候我们就需要用这类的异步任务啦,调用后就让他去
跑,不堵塞主线程,我们继续干别的。

@Async public void doSomeHeavyBackgroundTask() { try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } 这比我们手动开多一个线程方。

相关文档
最新文档