我正在尝试从我的(基于 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/