Cada solicitud se trata en un hilo diferente. Esto no es un "hilo por usuario". Una solicitud es cualquier interacción del cliente (navegador web) y el servidor. Por lo tanto, escribiendo una Url en su navegador, invocando una solicitud de AJAX, cada uno se maneja en un hilo separado.
El estado que un usuario adquiere durante un 'inicio de sesión' (no tiene que ser un inicio de sesión per se; una mejor manera de decir que es un conjunto de solicitudes relacionadas por un usuario) se almacena convenientemente en sesión. Puede usar la sesión para almacenar cualquier información que sea aplicable al usuario, aunque debe tener cuidado de no almacenar demasiados datos porque consume memoria. El manejo de la sesión requiere un grado de habilidad.
Sí hay que tener mucho cuidado si a encender de nuevos temas; puedes romper cosas, y típicamente es una mala idea. Si debe hacer algo que llevará mucho tiempo, use JMS para manejar lo que sea de forma asíncrona. También recuerde que no todas las tareas que afectan los datos de la aplicación web deben invocarse desde la aplicación web. Una tarea que escanea los datos diariamente se puede ejecutar como una tarea separada dentro o fuera de tomcat, es decir, puede escribir un trabajo usando algo como el programador de cuarzo, o incluso escribir un programa separado y configurarlo para que se ejecute en un cron (sin embargo, hay que tener cuidado con el trabajo cambiando los datos de debajo de tu aplicación web).
Si está utilizando las mejores tecnologías como Spring e Hibernate, normalmente vinculan objetos (o pueden ser configurados por el desarrollador de la aplicación) que el programador necesitará para cada hilo (usando ThreadLocal de java).
Ésta es también una de las razones que comienzan sus propios hilos es peligroso. Si inicia su propio hilo, puede perder recursos que están vinculados al hilo inicial cuando finaliza la solicitud, y esto significa que si intenta acceder a esos recursos en su hilo de trabajo, no estarán disponibles. Este tipo de error puede ser un dolor en el culo para encontrar/corregir.
edición - como Stephen C señaló en un comentario para otra respuesta, es importante hacer notar que por lo general Tomcat (y otros recipientes) Mantener un grupo de subprocesos para su uso. Esto significa que un nuevo hilo no necesariamente se crea para cada solicitud. Esto significa que cada solicitud ejecuta en un hilo separado, que podría o no podría ser creada o reutilizado.
Puede encontrar [esta respuesta] (http://stackoverflow.com/questions/3106452/java-servlet-instantiation-and-session-variables/3106909#3106909) útil también. – BalusC