Потокобезопасный контроллер и служебные классы? - PullRequest
2 голосов
/ 24 июня 2010

Итак, я использую Spring MVC и в своем контроллере я вызываю несколько классов Utility. Нужно ли синхронизировать коллекции, которые я использую в этих служебных классах? Точно так же, создаются ли несколько потоков для каждого пользователя, когда они получают доступ к моей веб-странице в контроллере, что означает необходимость обеспечения безопасности потока?

Ответы [ 2 ]

2 голосов
/ 24 июня 2010

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

Учитывая, что контроллеры должны быть потоко-безопасными, выЗатем необходимо убедиться, что ваши служебные классы и коллекции, используемые контроллером, являются поточно-ориентированными, либо по замыслу (например, делая их, либо запросом контроллера, либо, возможно, областью действия сеанса, если вы гарантируете, что один и тот же сеанс не может обслуживаться одновременно), либо путем использования блокировкиобщие ресурсы.

0 голосов
/ 24 июня 2010

Как правило, вы должны быть хорошими, но вот очень хорошая статья, в которой говорится о безопасности потоков в веб-приложениях Spring, Контроллеры потоковых потоков в Spring MVC.

...