1

我想让我的控制器(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";
        }
    };
}

我需要任何特殊代码吗?

4

1 回答 1

2

Spring MVC的文档说明了有关Callable<?>处理程序方法的返回类型的以下内容

当应用程序想要在 Spring MVC 管理的线程中异步生成返回值时,可以返回 Callable。

Spring 将获取返回的Callable实例,将其传递给一个ExecutorService(实际上比那做更多的处理,但为简单起见),并以与Thread您的初始请求不同的方式执行它。等待 5 秒后,它将返回与视图名称关联的视图"helloWorld"

于 2013-10-13T15:00:01.880 回答