Модель с одной нитью - PullRequest
       13

Модель с одной нитью

3 голосов
/ 15 марта 2009

Если в сервлете реализовано однопоточное взаимодействие, как контейнер сервлетов обеспечивает, чтобы сервлеты обрабатывали только один запрос за раз? Даже у однопоточного интерфейса модели тоже нет методов. Спасибо.

Ответы [ 3 ]

2 голосов
/ 15 марта 2009

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

Однопоточная модель широко не используется - лучше сделать сам сервлет без состояний и разрешить обработку нескольких запросов одновременно.

1 голос
/ 02 марта 2011

Идея не в том, чтобы полагаться на SingleThreadModel для решения проблем с многопоточностью. Поскольку контейнеры сервлетов не обязаны связываться с контрактом с одной нитью, рекомендуется не полагаться на контейнер для создания нескольких экземпляров сервлетов.

0 голосов
/ 15 марта 2009

Это зависит от реализации. Он может создать пул экземпляров сервлета или может иметь только один экземпляр сервлета и синхронизировать доступ к нему. Последнее приводит к большему количеству споров.

http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/SingleThreadModel.html

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