Чтобы добавить к тому, что упомянул skaffman, может показаться, что вам не нужно думать о многопоточности при написании веб-приложения, потому что инфраструктура / API Servlet полностью ориентирована на реализацию методов (service()
, doGet()
, doPost()
и т. Д.), Которые вызываются один раз для каждого HTTP-запроса.
Следовательно, в простом приложении вы можете реализовать эти методы в своем сервлете и / или JSP или в любом другом месте и не думать о том, что происходит, когда взаимодействуют несколько потоков.
Но в тот момент, когда вы начинаете иметь общее состояние между сервлетами или сервисными методами, затем, возможно, не осознавая этого вы работаете с несколькими потоками, взаимодействующими, и если вы не будете осторожны, вы в конечном итоге получите проблемы с потоками или синхронизацией. Вам придется иметь дело с этим, потому что в Tomcat (и я предполагаю, что все контейнеры сервлетов, хотя я не знаю, требуется ли это спецификацией Servlet), каждый запрос обрабатывается (возможно) другим потоком. Поэтому, если вы получите два одновременных запроса, они будут обрабатываться двумя отдельными потоками одновременно (одновременно).