2009-06-01 7 views
2

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

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

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

ответ

3

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

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

1

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