En programación, definimos parámetros de método para pasar contenido de variables; si el nivel del método de ejecución es profundo, entonces cada método debe definir los parámetros a pasar; en este momento, algunas variables pueden pasarse por ThreadLocal; mientras todos los métodos se ejecuten en el mismo hilo, se puede establecer y leer el valor de ThreadLocal.
La clase ThreadLocal se utiliza para proporcionar variables locales dentro del hilo. Cuando se accede a estas variables (get/set) en un entorno multihilo, las variables de cada hilo son relativamente independientes de las variables de otros hilos.
ThreadLocal primero obtiene el hilo actual (Thread t = Thread.currentThread()) al ejecutar el método set, y usará el hilo actual para obtener un ThreadLocalMap; si el mapa no está vacío, significa que el hilo actual tiene un mapa previamente acotado, luego actualiza el valor de este map, si no, se usa como clave para poner el valor en el map, de modo que se realiza la vinculación de variables e hilos.
Prueba el código, configura el pool de hilos para mantener un máximo de 5 hilos, y cuando llamemos al método get ThreadLocal en el caso del multihilo, obtendremos los datos ThreadLocal (Conjunto de datos por otros hilos), nosotrosEl método ThreadLocal set no se llama en el hilo actual para establecer los datos, como se muestra en la figura siguiente:
Causas del error:Una vez que un hilo se reutiliza, es probable que el primer valor obtenido de ThreadLocal sea un valor sobrante de otros hilos anteriores。
Porque, después de terminar con ThreadLocal en el hilo actual,Asegúrate de llamar a la retirada para una purga oportuna。 Como se muestra a continuación:
Código:
(Fin)
|