O princípio subjacente do ThreadLocal

(1) ThreadLocal é um mecanismo de armazenamento local de encadeamento fornecido em Java, que pode ser usado para armazenar dados em cache em um encadeamento, e o encadeamento pode obter dados em cache a qualquer momento e em qualquer método.
(2) A camada inferior de ThreadLocal é implementada por meio de ThreadLocalMap. Há um ThreadLocalMap em cada objeto Thread (observe que não é um objeto ThreadLocal). A chave do Map é o objeto ThreadLocal e o valor do Map é o valor que precisa ser armazenado em cache.
(3) Se ThreadLocal for usado no pool de threads, isso causará vazamentos de memória, porque quando o objeto ThreadLocal for usado, a chave, valor ou objeto Entry a ser definido deve ser reciclado, mas os threads no pool de threads serão não pode ser reciclado, e o objeto thread aponta para o ThreadLocalMap por meio de uma referência forte, e o ThreadLocalMap aponta para o objeto Entry por meio de uma referência forte. Se o thread não for reciclado, o objeto Entry não será reciclado, resultando em um vazamento de memória A solução é chamar manualmente o ThreadLocal após usar o objeto ThreadLocal O método remove limpa manualmente o objeto.
(4) O cenário clássico de aplicação de ThreadLocal é o gerenciamento de conexão (um thread mantém uma conexão, o objeto de conexão pode ser passado entre diferentes métodos e os threads não compartilham a mesma conexão).
insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/weixin_49131718/article/details/131795407
Recomendado
Clasificación