我使用Spring的引导与@EnableScheduling
和@EnableAsync
。春@Async方法调用内部@Scheduled方法
我具有被注解为@Scheduled
的方法。 我有几个方法,这些方法都标注了@Async
。
现在我在@Scheduled
方法中调用这些@Async
方法,并在异步方法中打印出当前线程的名称。我看到的是他们都有同一个线程的名字,这实际上是运行@Scheduled
方法的线程。
我看不出异步方法执行。 这里有什么问题?
这里是我的应用程序启动类
@SpringBootApplication
@EnableScheduling
@EnableAsync
public class ApplicationBoot {
public static void main(String[] args) {
SpringApplication.run(ApplicationBoot.class, args);
}
}
这里是我的调度类
@Component
public class TaskScheduler {
private static final Logger logger = Logger.getLogger(TaskScheduler.class);
@Scheduled(fixedDelay = 10000)
public void ScheduledMethod() {
methodOne();
methodTwo();
methodThree();
}
@Async
private void methodOne() {
logger.info("Method one called by Thread : " + Thread.currentThread().getName() + " at " + new Date());
}
@Async
private void methodTwo() {
logger.info("Method two called by Thread : " + Thread.currentThread().getName() + " at " + new Date());
}
@Async
private void methodThree() {
logger.info("Method three called by Thread : " + Thread.currentThread().getName() + " at " + new Date());
}
}
输出
方法一通过线程调用:池1线程-1星期二4月4日16时32分27秒IST 2017年
方法二由线程调用:pool-1-thread-1 at 4 Apr 04 16:32:27 IST 2017
方法三由Thread调用:pool-1-thread-1 at Apr 4 04:32:27 IST 2017
一些代码示例将是有益的。 – Manuel
除了代码请后配置和示例输出表现出所述行为 –
@Manuel加入样本代码。 –