## Problemas con los Threads

Los servlets HTTP normalmente pueden servir a múltiples clientes concurrentemente. Si los métodos de nuestro servlet trabajan con clientes que acceden a recursos compartidos, podemos manejar la concurrencia creando un servlet que maneje sólo una petición de cliente a la vez. (También se puede sincronizar el acceso a los recursos, un punto que se cubre en al sección Threads de Control de este tutorial).

Para hacer que el servlet maneje sólo un cliente a la vez, tiene que implementar el interface SingleThreadModel además de extender la clase HttpServlet.

Implementar el interface SingleThreadModel no implica escribir ningún método extra. Sólo se declara que el servlet implementa el interface, y el servidor se asegura de que nuestro servlet sólo ejecute un método service cada vez.

Por ejemplo, el ReceiptServlet acepta un nombre de usuario y un número de tarjeta de credito, y le agradece al usuario su pedido. Si este servlet actualizara realmente una base de datos, por ejemplo, una que siga la pista del inventario, entonces la conexión con la base de datos podría ser un recurso compartido. El servlet podría sincronizar el acceso a ese recurso, o implementar el interface SingleThreadModel. Si el servlet implementa este interface, el único cambio en el código de la página anterior es la línea mostrada en negrita:

        public class ReceiptServlet extends HttpServlet
                                    implements SingleThreadModel {

            public void doPost(HttpServletRequest request,
                               HttpServletResponse response)
    	    throws ServletException, IOException {
                    ...
            }
            ...
        }

Ozito