Tengo una aplicación de servidor cliente multi-hilos que usa Sockets. Cuando se encuentra una nueva conexión, la ejecución adicional se transfiere a un nuevo subproceso utilizando el nuevo grupo de subprocesos de ejecutores.Thread.setName (name) advertencias
Quiero registrar el ID del cliente en todas las instrucciones de registro para ese cliente. El problema es que no quiero modificar las firmas de métodos solo para pasar la identificación del cliente.
Las soluciones que pensé que de son:
- Usando ThreadLocal para mantener el valor del cliente.
- En run(), puedo establecer el ID del cliente en Thread usando Thread.currentThread(). SetName (clientId);
Primero uno debería funcionar. Pero me gusta la segunda opción porque a. Puedo encontrar la identificación del cliente del depurador b. La biblioteca del registrador se puede configurar para mostrar el nombre del hilo. Por lo tanto, no se requerirían cambios en las instrucciones de registro y también funcionaría para los registradores dentro de las bibliotecas.
¿Cuáles son las advertencias para usar thread.setName() aparte de las mencionadas en el javadoc? ¿Cómo afecta el rendimiento? La frecuencia máxima de la llamada a thread.setName() sería de aproximadamente 200 por segundo y promedia aproximadamente 0.3 por segundo.
Esto se ve bien. Lo intentaré. ¡Gracias! – Dojo