【发布时间】:2014-12-04 16:09:47
【问题描述】:
我正在阅读 SpringMVC 文档,但我陷入了异步部分:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-ann-async
我使用这样的控制器创建了如下非常简单的项目(Spring 4、Java 8):
@Controller
public class HomeController {
@RequestMapping("/async")
public Callable<String> async() {
logger.info("Async IN, {}", new Date());
return () -> {
Thread.sleep(5000);
return "home";
};
}
@RequestMapping("/sync")
public String sync() throws Exception {
logger.info("Sync IN, {}", new Date());
Thread.sleep(5000);
return "home";
}
}
我已在 Servlet 中启用异步功能 - 如文档中所述。现在我打电话给请求,首先是/sync,其次是/async。相继。他们都被立即派出。 Spring 应用程序在开始处理 /async 请求之前不会等待 /sync 结束。我在请求后的同一时间得到响应。
看起来像这样:
INFO : com.mydlarz.springtt.HomeController - Sync IN, Thu Dec 04 17:00:18 CET 2014
INFO : com.mydlarz.springtt.HomeController - Async IN, Thu Dec 04 17:00:19 CET 2014
INFO : com.mydlarz.springtt.HomeController - Async IN, Thu Dec 04 17:00:29 CET 2014
INFO : com.mydlarz.springtt.HomeController - Sync IN, Thu Dec 04 17:00:29 CET 2014
这是为什么呢?第二次请求处理不应在第一次 SYNC 后约 5 秒开始?
【问题讨论】:
标签: java spring spring-mvc asynchronous