Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 请求异步处理不起作用_Spring_Spring Mvc - Fatal编程技术网

Spring 请求异步处理不起作用

Spring 请求异步处理不起作用,spring,spring-mvc,Spring,Spring Mvc,我想让我的控制器(SpringMVC)并行处理请求。我在下面使用@Callable,但它不起作用,因为下一个请求是在第一个请求完成后处理的(返回视图) @RequestMapping(method=RequestMethod.GET) 公共可调用helloWorld(最终模型)抛出InterruptedException{ 返回新的可调用(){ @凌驾 公共字符串调用()引发异常{ 睡眠(5000); 返回“helloWorld”; } }; } 我需要任何特殊的代码吗?下面是关于处理程序方法

我想让我的控制器(SpringMVC)并行处理请求。我在下面使用@Callable,但它不起作用,因为下一个请求是在第一个请求完成后处理的(返回视图)

@RequestMapping(method=RequestMethod.GET)
公共可调用helloWorld(最终模型)抛出InterruptedException{
返回新的可调用(){
@凌驾
公共字符串调用()引发异常{
睡眠(5000);
返回“helloWorld”;
}
};
}
我需要任何特殊的代码吗?

下面是关于处理程序方法的
可调用的
返回类型的说明

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


Spring将获取返回的
Callable
实例,将其传递给
ExecutorService
(实际上要进行更多的处理,但为了简单起见),然后在与初始请求不同的
线程中执行它。等待5秒钟后,它将返回与视图名称“helloWorld”关联的视图。您的期望是什么?当返回Callable时,第二个请求触发helloWorld。但实际上,它会等到第一个可调用的返回“helloWorld”。我可以看到可调用的是在另一个线程中处理的,但为什么下一个请求必须等待第一个一端在另一个线程中处理呢。我以为整个请求都会并行处理……如何理解这个文档片段?控制器方法现在可以返回java.util.concurrent.Callable并从单独的线程生成返回值,而不是像往常一样返回值。同时,主Servlet容器线程被释放并允许处理其他请求。@pawb4r它工作正常。只是不要在同一个浏览器上同时尝试两个请求。例如,chrome会意识到它正在发送相同的请求,并且一次只发送一个。@pawb4r您读得非常好。浏览器的行为就是这样的。尝试跨浏览器或使用任何Java HTTP客户端。
@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";
        }
    };
}