почему атрибуты сеанса официально не являются потокобезопасными в сервлете? - PullRequest
4 голосов
/ 27 сентября 2011

Я читаю текст сервлета, касающийся области действия атрибутов в сервлете Java.В тексте автор написал: "Session attributes are officially not thread safe."

Это смутило меня, потому что я думал, что у одного пользователя есть только определенный сеанс, никто не может получить доступ к другим.Если это так, атрибуты сеанса являются потокобезопасными.Или я что-то недопонимаю ??

Ответы [ 2 ]

5 голосов
/ 27 сентября 2011

Это смутило меня, потому что я думал, что один пользователь имеет только определенный сеанс, никто не может получить доступ к другим.Если это так, атрибуты сеанса являются потокобезопасными.

Что ж, если бы это было так, атрибуты сеанса не должны быть потокобезопасными.Это отличается от того, что они являются потокобезопасными.

Отсутствие безопасности потоков может быть проблемой, если у вас более одного потока, обрабатывающего один и тот же пользовательский сеанс одновременно.Может быть, некоторые параллельные выполнения, которые вы породили из основного потока запроса.Или один и тот же пользователь обращается к серверу более одного раза (например, загружает пять кадров одновременно).

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

Атрибут сеанса не является thread safe.

Из этого документа ( Теория и практика Java: все ли веб-приложения с состоянием нарушены? )

Когда веб-приложение хранит изменяемые данные сеанса, такие как покупки корзина в HttpSession, становится возможным, что два запроса могут попытаться чтобы получить доступ к корзине одновременно. Несколько режимов отказа возможны, в том числе:
1. Ошибка атомарности, когда один поток обновление нескольких элементов данных, и другой поток считывает данные во время они находятся в противоречивом состоянии
2. Ошибка видимости между поток чтения и поток записи, где один поток изменяет корзина, но другой видит устаревшее или противоречивое состояние для корзины содержание

Посмотрите на тему от coderanch;

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