我在项目中使用java-11和spring Boot 2.3.8.RELEASE。
在我的项目中,我在调用**@async方法时遇到了问题。
当我调用@async**方法时,有时它会在几个小时后调用。在大多数情况下,它会立即执行,但有时需要几个小时才能调用该方法。
下面是我的代码
public void methodA(){
logger.info("going to call async method");
this.methodB();
logger.info("async method execution completed");
}
@Async
public void methodB(){
logger.info("inside async method");
}
当我检查上面的日志时,我得到了下面的o/p
2023-05-29 03:36:36.893 INFO 3382750 --- [http-nio-auto-1-exec-236] com.demo.web.service : going to call async method
2023-05-29 04:53:08.893 INFO 3382750 --- [http-nio-auto-1-exec-236] com.demo.web.service : inside async method
2023-05-29 04:53:08.893 INFO 3382750 --- [http-nio-auto-1-exec-236] com.demo.web.service : async method execution completed
我不明白为什么会这样有时它像预期的那样工作,有时它像这样工作
任何帮助都很感激
请引导。谢谢
1条答案
按热度按时间shyt4zoc1#
.在大多数情况下,它会立即执行,但有时需要几个小时才能调用该方法。Blockquote
线程问题。如果可用线程正忙碌着处理其他任务,您可能必须等待几个小时。
1.在同一个类中调用async方法-不会起作用。您可能会看到详细信息https://www.baeldung.com/spring-async
1.您应该创建一个ThreadPool,其大小应该大于1,您可能会看到详细信息https://spring.io/guides/gs/async-method/