Para añadir a lo skaffman ha mencionado, puede parecer que no es necesario pensar en múltiples hilos al escribir una aplicación web ya que el marco servlet/API está orientado completamente alrededor de los métodos de ejecución (service()
, doGet()
, doPost()
, etc.) que se invocan una vez por solicitud HTTP.
Por lo tanto, en una aplicación simple, puede implementar estos métodos en su servlet y/o JSP o lo que sea y no pensar en lo que sucede cuando interactúan varios hilos.
Pero el segundo se inicia después de haber estado compartida entre los servlets o métodos de servicio, entonces posiblemente sin darse cuenta que son tratar con múltiples hilos de interactuar, y si no se tiene cuidado, es muy probable que tenga múltiples hilos o sincronización cuestiones. Tendrá que lidiar con esto porque en Tomcat (y supongo que todos los contenedores de servlets, aunque no sé si es requerido por las especificaciones del Servlet), cada solicitud es manejada por (posiblemente) un hilo diferente. Por lo tanto, si recibe dos solicitudes simultáneas, estas serán manejadas por dos hilos separados al mismo tiempo (al mismo tiempo).
Completando su respuesta: Por ejemplo, cuando escribe un servlet no debería tener variables locales en la clase de servlet. ¿Por qué? Porque la clase de servlet no está instanciada para cada hilo. Tomcat reutiliza instancias para varios hilos, por lo que todas sus variables deben estar dentro de los métodos doGet o doPost, por lo que se inicializan y asignan en diferentes lugares de memoria cada vez que se llama al método. – pakore
@pakore: las variables locales son los métodos internos. Te refieres a variables de instancia. –
Sí, quiero decir variables de instancia. Lo siento. Gracias por la corrección :). No puedo editar mi comentario ahora :( – pakore