java - 来自 Spring MVC Controller 的异步调用

标签 java spring spring-mvc asynchronous

我正在尝试从我的(基于 Spring MVC 的) Controller 中进行异步调用。

我正在使用以下代码片段:

FutureTask<Object> runnableTask = new FutureTask<Object>(  
                new Runnable() {  
                    public void run() {  
                        // do something
                    }  

                }, null);  
runnableTask.run(); 

但是,无论如何,这都不是异步执行的,即,在上述任务完成之前,我的 Controller 不会返回响应(到 View )。我是否遗漏了什么或者有其他方法可以做到这一点?

最佳答案

您需要一个执行人来执行此操作:

Executor executor = Executors.newXx(..); //any executor, likely single-threaded
executor.submit(yourRunnable);
executor.shutdown();

但是 spring 已经有了( docs ) - 只需创建一个方法并用 @Async 对其进行注释即可(并且在 xml 中有 <task:annotation-driven />)

关于java - 来自 Spring MVC Controller 的异步调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8153220/

相关文章:

文本字段的 javafx 场景生成器 Action 处理程序

java - 使用@PreAuthorize时的安全配置

spring - 使用 Spring/MyBatis 理解 EhCache

java - 下载期间出现 Spring Boot 异常导致空文件

java - 需要查看客户端与外部 Web 服务对话的 SOAP 消息 - 怎么做? (Eclipse/Netbeans/IDEA 可以)

java - Spring 交易

java - 在 apache-karaf 中查看 osgi 修订版的命令

java - Spring Data Gemfire 存储 java.lang.Class 字段

java - 在 Spring Batch 步骤之间传递输出

jquery - Jackson (JSON) 当 Float 为 null 时抛出 JsonMappingException