Сервлеты, многопоточность, как устроено?

Добрый день,
Предположим написал сервлет ( или на спринге сделал веб сервис через @RequestMapping) и запускаю в Tomcat.
Предположим набижало 10к юзеров.
  1. Томкат будет создавать 10к потоков? Или в очередь поставит, начиная с n-ого? в конфигах это прописывается?
  2. Предположим сервлет лезет в БД. Как правильно делать? Connection Pool?
  3. Как кэшировать данные, ну скажем первый сервлет в первом же запросе вытащил данные из БД, какую то общую часть для всех хотелось бы закешировать. Это делать в ServletContext? Если хочу использовать какой то кэш ну типа memcache допустим, то он будет расшарен между всеми экземплярами сервлета?

  4. когда экземпляр сервлета заканчивает работу ( ну или выходит из метода помеченного @RequestMapping ) он уничтожается полностью? И нет возможности передать что-то другому экземпляру сервлета?
  5. Всей много поточностью рулит контейнер сервлетов ( томкат) и самому создавать потоки в теле метода @RequestMapping крайне не рекомендуется? В каком случае надо там создавать потоки?
  6. вся логика сервлета происходит в синхронном режиме? ну то есть я полез к БД тяжелым запросом, и все встанет колом? ( сервер перестанет реагировать на 10001 запрос клиента)? Как разрулить это? Неиспользовать апач/томкат, а юзать jetty / undertow / nginx ?


Большое спасибо! ( если есть толковая статья где это все разжевано - буду благодарен, но плз только не талмуд на 1000стр)
  • Вопрос задан
  • 4497 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
При запуске Tomcat создаст пул потоков и экземпляр сервлета. При поступлении запросов методы сервлета будут запускаться на потоках из пула. Сервлет не уничтожается до окончания работы сервера.

Потоки можно создавать самостоятельно, но зачем? Особенно при использовании Spring, который предоставляет целую кучу удобных высокоуровневых абстракций для удобной работы с асинхронными задачами.

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

Войдите, чтобы написать ответ

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