我正在尝试从我的(基于Spring MVC的)Controller中进行异步调用。
我正在使用以下代码段:
FutureTask<Object> runnableTask = new FutureTask<Object>(
new Runnable() {
public void run() {
// do something
}
}, null);
runnableTask.run();
但是,无论如何,这都不是异步执行的,即我的Controller在上述任务完成之前不会返回响应(到视图)。我错过了什么或有其他方法可以这样做吗?
答案 0 :(得分:4)
你需要一个遗嘱执行人来做到这一点:
Executor executor = Executors.newXx(..); //any executor, likely single-threaded
executor.submit(yourRunnable);
executor.shutdown();
但春天已经有了(docs) - 只需创建一个方法并用@Async
注释它(并在xml中有<task:annotation-driven />
)