Почему (javax.servlet). SingleThreadModel удержан от использования?

Почему javax.servlet.SingleThreadModel устаревший?

25
задан BalusC 31 March 2010 в 11:48
поделиться

2 ответа

javadoc говорит почему. SingleThreadModel был разработан как простое решение для параллелизма с низкой нагрузкой, но он даже не справился с этим:

Обратите внимание, что SingleThreadModel не решает все проблемы безопасности потоков. Например, к атрибутам сеанса и статическим переменным по-прежнему можно получить доступ несколькими запросами в нескольких потоках одновременно, даже если Используются сервлеты SingleThreadModel. Разработчику рекомендуется использовать другие средства для решения этих проблем вместо реализации этого интерфейса , например, избегая использования { {1}} переменной экземпляра или синхронизацию блока кода , обращающегося к этим ресурсам.

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

29
ответ дан 28 November 2019 в 21:03
поделиться

По сути, это плохой способ обработки параллелизма. Вместо этого извлеките состояние из вашего сервлета, чтобы один и тот же сервлет мог использоваться несколькими потоками одновременно. Сохранять состояние в «пуле» экземпляров сервлетов, каждый из которых может иметь состояние, оставшееся от предыдущего запроса и т. Д., Довольно ужасно.

11
ответ дан 28 November 2019 в 21:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: