Как влияет второй запрос вызова Thread.currentThread (). Sleep (2000) в обработчике запросов Spring MVC? - PullRequest
3 голосов
/ 26 сентября 2011

Мне нужно дождаться условия в обработчике запросов Spring MVC, пока я вызываю стороннюю службу для обновления некоторых сущностей для пользователя.

Среднее время ожидания составляет около 2 секунд.

Я звоню Thread.sleep, чтобы разрешить удаленный вызов и обновить сущности в базе данных:

Thread.currentThread().sleep(2000);         

После этого я получаю обновленные модели из базы данных и отображаю представление.

Однако, как это повлияет на параллельные запросы, поступающие для обработки в этот контроллер / обработчик запросов?

Будут ли параллельные запросы также ждать?

Или они будут порождаться в отдельных потоках, и на них не будет влиять задержка текущего запроса?

1 Ответ

2 голосов
/ 26 сентября 2011

То, что вы делаете, может иногда работать, но это не надежное решение.

Интерфейс Java Future, наряду с настроенным ExecutorService, позволяет вам начать некоторую операцию и заставить один или несколько потоков ждать, пока результат не будет готов (или, возможно, до истечения определенного времени).

Вы можете найти документацию для этого здесь: http://download.oracle.com/javase/6/docs/api/java/util/concurrent/Future.html

...