У меня есть служба с методом, помеченным @Async
, как показано ниже:
@Service("AsyncService")
public class AsyncService {
@Async
public void asyncPrint() {
logger.info("Inside asyncPrint");
}
}
Метод asyn c вызывается из другой службы, подобной этой:
@Service("CallerService")
public class CallerService {
@Autowired
private AsyncService asyncService;
public void caller() {
logger.info("Before asyncPrint");
asyncService.asyncPrint();
logger.info("After asyncPrint");
// Custom code
}
}
Однако я вижу, что иногда метод asyn c не вызывается. Я вижу журналы «до» и «после», но журнал asyn c не печатается.
Пример o / p:
//Logs from other services
Before asyncPrint
After asyncPrint
Inside asyncPrint
//Logs from other services
Before asyncPrint
After asyncPrint
Почему это может происходить? Можно ли отбросить задачи asyn c, если в Executor есть отставание? Кроме того, есть ли способ узнать, сколько из всех запущенных потоков используется asyn c? Или как еще можно отладить это?
Спасибо.