Да, это будет работать. В одном веб-приложении, над которым я работал, мне нужно было отправить уведомление по электронной почте в зависимости от действий пользователя. Я добавил перехватчик пост-фиксации в сервисе и отключил его в отдельной ветке. (В моем случае это оказалось чище, чем поместить код в контроллер, потому что я хотел, чтобы это произошло, только если транзакция зафиксирована.)
Вам нужно убедиться, что поток действительно останавливается в какой-то момент, либо установив для daemon значение true (если все нормально, остановка сервера убивает поток без предупреждения), либо убедитесь, что код в его методе run всегда завершится в какой-то момент.
Вам лучше использовать пул потоков, чем создавать новые потоки, поэтому вы не рискуете исчерпать ресурсы (остановка потоков обычно не является независимыми событиями, если поток зависает, вероятно, следующий тоже будет, поэтому вам нужен способ сократить ваши потери). Методы, помеченные @Async, будут выполняться с использованием исполнителя, который вы можете настроить, как показано в документации Spring .