我正在使用 Spring Boot@EnableScheduling
和@EnableAsync
.
我有一个用@Scheduled
. 我还有一些方法,用@Async
.
现在我在方法中调用这些@Async
方法@Scheduled
并在异步方法中打印出当前线程的名称。我看到的是它们都有相同的线程名称,实际上是运行该@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());
}
}
输出
线程调用的方法一:pool-1-thread-1 于 2017 年 4 月 4 日星期二 16:32:27 IST
线程调用的方法二:2017 年 4 月 4 日星期二 16:32:27 的 pool-1-thread-1
线程调用的方法三:2017 年 4 月 4 日星期二 16:32:27 的 pool-1-thread-1