если ваш метод
@Async
public void sendMail() {}
находится в том же классе, тогда не будет работать.
Для @Async
оно должно применяться только к публичным методам
самовывоз - вызов асинхронного метода из того же самого
класс - не сработает
Итак, я думаю, что ваш метод sendMail
будет работать нормально, если он находится в другом классе, чем блок synchronized
.