来自Spring MVC Controller的异步调用

Sak*_*ket 2 java spring asynchronous spring-mvc

我正在尝试从基于Spring MVC的控制器中进行异步调用。

我正在使用以下代码段:

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

                }, null);  
runnableTask.run(); 
Run Code Online (Sandbox Code Playgroud)

但是,无论如何,这不会异步执行,即,在上述任务完成之前,我的控制器不会返回响应(返回到视图)。我是否缺少某些东西,或者有其他替代方法吗?

Boz*_*zho 5

您需要执行者来执行此操作:

Executor executor = Executors.newXx(..); //any executor, likely single-threaded
executor.submit(yourRunnable);
executor.shutdown();
Run Code Online (Sandbox Code Playgroud)

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