Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 27855|Respuesta: 1

[Fuente] Java Thread Los principios locales y la reutilización multihilo conducen a un desorden de datos

[Copiar enlace]
Publicado en 1/11/2021 11:45:36 | | | |
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)





Anterior:Docker revisa los ajustes de reinicio de contenedores y contenedores de parada masiva
Próximo:Jenkins (5) Presentación del grupo de proyecto
Publicado en 2/11/2021 21:30:12 |
Ven a aprender otra vez.
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com