¿Dónde se utiliza generalmente ThreadLocal? ¿De qué sirve?
Explíquelo a partir de los siguientes 8 puntos:
1. ThreadLocal se utiliza para resolver el problema de concurrencia de programas multiproceso.
2. un hilo, pero es una variable local de Thread. Cuando se usa ThreadLocal para mantener variables, ThreadLocal proporciona una copia independiente de la variable para cada hilo que usa la variable, por lo que cada hilo puede cambiar de forma independiente su propia copia sin afectar las copias correspondientes. a otros subprocesos.
3. Desde la perspectiva del subproceso, la variable de destino es como la variable local del subproceso, que también es el significado de "Local" en el nombre de la clase.
4. Las variables locales de Thread no son una invención nueva de Java. Java no proporciona soporte a nivel de lenguaje (sintaxis), pero proporciona soporte disfrazado a través de la clase ThreadLocal.
5 Métodos en la clase .ThreadLocal: (Los genéricos son compatibles después de la versión JDK5)
void set(valor T)
Establece el valor en la copia del hilo actual de esta variable local del hilo en el Valor especificado
void remove()
Elimina el valor de la variable local de este hilo del hilo actual
protected T inicialValue()
Devuelve esto El "valor inicial" del hilo actual para una variable local del hilo
T get()
Devuelve el valor en la copia del hilo actual de esta variable local del hilo
6. El principio de ThreadLocal:
¿Cómo mantiene ThreadLocal una copia de las variables para cada hilo? De hecho, la idea de implementación es muy simple: hay un Mapa en la clase ThreadLocal, que se utiliza para almacenar una copia de las variables de cada hilo. La clave del elemento en el Mapa es el objeto del hilo, y el valor corresponde. a la copia variable del hilo.
p>7. Simule ThreadLocal usted mismo:
clase pública SimpleThreadLocal{
mapa privado valueMap=Collections.synchronizedMap(new HashMap());
public void set(Object newValue){
valueMap.put(Thread.currentThread(),newValue);//La clave es el objeto del hilo y el el valor es la copia variable de este hilo
}