Потоки в веб-приложениях Java EE - PullRequest
2 голосов
/ 01 июня 2009

Мне интересно, как следующие концепции обычно выполняются в контейнере Java EE, создается ли один экземпляр для запроса или один экземпляр обслуживает все запросы?

  • сервлеты
  • Метки

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

Ответы [ 2 ]

3 голосов
/ 01 июня 2009

Оба верны. Контейнер может повторно использовать старые экземпляры для новых запросов и даже создавать новые экземпляры, если требуется обслуживать больше запросов.

Использование StringBuilder должно быть безопасным, если его использование не пересекает границы экземпляров (путем статического использования, возврата StringBuilders и т. Д.). Поэтому, если вы используете его в функции / методе для создания вашего String-вывода, вы можете это сделать.

1 голос
/ 01 июня 2009

Некоторые серверы приложений реализуют пул потоков, который будет выполнять определенное количество запросов на поток, переключая нагрузку между ними по мере необходимости. Более простые двигатели будут катить нить за запрос. Однако, если вы никогда не получите доступ к своему StringBuilder из нескольких потоков одновременно, у вас никогда не должно возникнуть проблем с безопасностью потоков.

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