Tengo un problema que realmente no creo que tenga una solución, pero lo intentaré de todos modos. Mi aplicación utiliza un grupo de subprocesos y algunos de los subprocesos de este grupo tienen una variable local de subproceso heredable. Extendí la clase ThreadPoolExecutor para borrar esencialmente la variable local thread (en el método de devolución de llamada afterExecute) cuando se termina de ejecutar un subproceso.InheritableThreadLocal and thread pools
Entiendo que cuando se tiene una variable InheritableThreadLocal, se invoca el método childValue() cuando se inicializa el hilo para obtener el valor de la variable ThreadLocal del hilo padre. Sin embargo, en mi caso, la próxima vez que se utiliza el subproceso (después de ser utilizado una vez), el valor de la variable InheritableThreadLocal es nulo (porque se eliminó previamente en afterExecute). ¿Hay alguna manera de acceder a la variable local de subproceso principal del subproceso en beforeExecute para que pueda simular esencialmente lo que hace el método childValue en InheritableThreadLocal en el momento de la creación del subproceso?
¿Por qué estás limpiando valor local hilo del hilo hijo si lo necesita más adelante? ¿Los valores necesarios en la próxima ejecución provienen de una secuencia padre diferente o han cambiado en la matriz desde la primera vez que se creó? –
@Bert: esa es precisamente la razón. Básicamente, estoy almacenando un id. De solicitud en la variable local de subprocesos que cambia a través de múltiples usos del subproceso secundario. – neesh