@Async and @Asynchronous identical in their capabilities. They both run this method in a separate thread pool, and both enable the result type void and Future<T> . There are no functional differences between them. Spring's only (minor) advantage is that you have full control over the lower thread pool, and with @Asynchronous this is probably configured based on the container.
If your application already uses Spring MVC, @Async seems like a natural consequence.
source share