Red de conocimiento informático - Aprendizaje de programación - ¿Pueden otros subprocesos acceder a ThreadLocal de Java?

¿Pueden otros subprocesos acceder a ThreadLocal de Java?

Threadlocal es por subproceso y otros subprocesos no accederán simultáneamente.

La variable threadlocal está asociada con un solo hilo. En términos simples, es similar a (para obtener más detalles, consulte el código fuente jdk):

Código Java

clase pública FakeThreadLocallt; Tgt; {

Subproceso final privado, Tgt; valores = nuevo Hilo, Tgt (); () {

valores de retorno .get(Thread.currentThread());

}

conjunto vacío público (T t) {

values.put(Thread.currentThread(), t);

}

}

Escenario de aplicación 1, crear una instancia de SimpleDateFormat es relativamente costoso. y los de corta duración se crean con frecuencia cuando el análisis de cadenas da como resultado un rendimiento deficiente. Incluso si SimpleDateFormat se define como una variable de clase estática, parece que este problema se puede resolver, pero SimpleDateFormat no es seguro para subprocesos y también habrá problemas si utiliza la sincronización de subprocesos "sincronizada". conduce a una degradación del rendimiento (adquisición serializada de SimpleDateFormat entre subprocesos (Ejemplo).

El uso de Threadlocal resuelve este problema. Para cada hilo, SimpleDateFormat no tiene un estado que afecte la cooperación entre ellos. Se crea una copia o copia de la variable SimpleDateFormat para cada hilo.

Código Java

Prueba de clase pública

{

// SimpleDateFormat no es seguro para subprocesos, así que asigne uno a cada subproceso

ThreadLocallt final estático privado; SimpleDateFormatgt; formateador = new ThreadLocallt; (){

@Override

protected SimpleDateFormat initialValue()

{

return new SimpleDateFormat("aaaaMMdd HHmm");

}

}

formato de cadena pública (fecha)

{

return formatter.get().format(fecha

}

}

; Escenario de aplicación 2: guarde el estado inicial en servlet/filtro para resolver problemas de concurrencia.

Escenario de aplicación 3, guarda el contexto relacionado con el hilo actual en algunos marcos.