@Async method calls are made in a specific thread pool. If your method freezes, it will keep one thread from the pool indefinitely. Spring can't do anything about it.
If your method is kind enough to accept an InterruptedException , you can Future.cancel() it off by calling Future.cancel() value returned from the asynchronous method.
source share