Асинхронные вызовы из Spring MVC Controller - PullRequest
2 голосов
/ 16 ноября 2011

Я пытаюсь сделать асинхронный вызов из моего (основанного на Spring MVC) контроллера.

Я использую следующий фрагмент:

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

                }, null);  
runnableTask.run(); 

Однако, несмотря ни на что, это не выполняется асинхронно, то есть мой Контроллер не возвращает ответ (в представление) до тех пор, пока вышеупомянутая задача не будет завершена. Я что-то упустил или есть альтернативный способ сделать это?

1 Ответ

4 голосов
/ 16 ноября 2011

Вам нужен исполнитель, чтобы сделать это:

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

Но у Spring это уже есть ( docs ) - просто создайте метод и аннотируйте его с помощью @Async (и имейте <task:annotation-driven /> в xml)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...