Cuándo usar el controlador Spring @Async vs Callable (controlador asíncrono, servlet 3)

Me gustaría saber el caso de uso general del uso de la implementación asíncrona de @Async y Servlet 3 en Spring usando Callable.

Según tengo entendido, @Async es para hacer que cualquier método (específicamente, cualquier método de servicio) se ejecute de forma asíncrona.

@Async
void doSomething(String s) {
// this will be executed asynchronously
}

y cualquier controlador que devuelva Callable

  @RequestMapping("/view")
public Callable<String> callableWithView(final Model model) {
    return new Callable<String>() {
        @Override
        public String call() throws Exception {
            Thread.sleep(2000);
            model.addAttribute("foo", "bar");
            model.addAttribute("fruit", "apple");
            return "views/html";
        }
    };
}

Estoy confundido sobre qué uso. ¿Cuál será el efecto de usar el servlet / controlador asíncrono y con el resorte @Async juntos?

Respuestas a la pregunta(2)

Su respuesta a la pregunta