Servlet 3(Asynchronous Requests) 中的异步支持为在另一个线程中处理HTTP请求提供了可能性。当有一个长时间运行的任务时,这是特别有趣的,因为当另一个线程处理这个请求时,容器线程被释放,并且可以继续为其他请求服务。
Callable
@RestController
public class CallableController {
@RequestMapping("callable")
public Callable<String> callable() {
Logger logger = LoggerFactory.getLogger(this.getClass());
String mainThreadName = Thread.currentThread().getName();
logger.info("callable() - mainThreadName:{}", mainThreadName);
Callable<String> result = (() -> {
try {
Thread.sleep(5000);
} catch (Exception e) {
}
logger.info(Thread.currentThread().getName