我想并行处理我的控制器(Spring MVC)处理请求。我在下面使用@Callable并且它不起作用,因为下一个请求在第一个请求完成后处理(返回视图)。
@RequestMapping(method = RequestMethod.GET)
public Callable<String> helloWorld(final Model model) throws InterruptedException {
return new Callable<String>() {
@Override
public String call() throws Exception {
Thread.sleep(5000);
return "helloWorld";
}
};
}
我需要任何特殊代码吗?
答案 0 :(得分:2)
documentation for Spring MVC表示以下关于处理程序方法的Callable<?>
返回类型
当应用程序想要生成时,可以返回Callable 在Spring MVC管理的线程中异步返回值。
Spring将获取返回的Callable
实例,将其传递给ExecutorService
(实际上比那更多处理,但为了简单起见)并在另一个Thread
中执行它然后你的初始请求。等待5秒后,它将返回与视图名称"helloWorld"
关联的视图。