Я пытаюсь реализовать асинхронный вызов с помощью аннотации @Async. Очевидно, поскольку это устаревший проект, версия Spring — 3.0.6, поэтому она не поддерживает более новые интерфейсы (AsyncConfigurer) и прослушиватели, представленные в более поздних версиях Spring.
На данный момент вызов @Async отлично работает с методом, который необходим для отправки электронных писем. Вызывающий код вызывает метод и возвращается, чтобы возобновить нормальное управление. Затем вызов @Async вызывается как отдельный поток. Все это очень хорошо и служит цели.
Вызов @Async относится к методу, предназначенному для отправки электронных писем в приложении. Однако иногда может быть запущено 1000 электронных писем. Я предполагаю, что это поднимет 1000 или около того потоков. Не приведет ли это к проблеме в приложении с таким количеством живых потоков? Эти потоки завершаются сами по себе? Что происходит в JVM с точки зрения использования памяти и места в куче?
Кроме того, я пытался вызвать этот метод из другого метода, пометив этот метод как @Async, но похоже, что поток не создан, и элемент управления фактически ожидает завершения всех операций в этом методе. Почему у него другое поведение? Не знаю, почему это происходило.
Заранее спасибо!