Na programação, definimos parâmetros de método para passar o conteúdo das variáveis; se o nível do método de execução for profundo, cada método precisa definir os parâmetros a serem passados; nesse momento, algumas variáveis podem ser passadas pelo ThreadLocal; desde que todos os métodos sejam executados na mesma thread, o valor do ThreadLocal pode ser definido e lido.
A classe ThreadLocal é usada para fornecer variáveis locais dentro da thread. Quando essas variáveis são acessadas (get/set) em um ambiente multithread, as variáveis em cada thread são relativamente independentes das variáveis em outras threads.
O ThreadLocal primeiro obterá a thread corrente (Thread t = Thread.currentThread()) ao executar o método set, e usará a thread atual para obter um ThreadLocalMap; se o mapa não estiver vazio, significa que a thread atual tem um mapa previamente delimitado, então atualiza o valor desse mapa; caso contrário, use a si mesmo como chave para colocar o valor no mapa, para realizar a vinculação de variáveis e threads.
Teste o código, configure o pool de threads para manter no máximo 5 threads, e quando chamarmos o método get ThreadLocal no caso de multithreading, obteremos os dados ThreadLocal (Conjunto de dados por outros threads), nósO método ThreadLocal não é chamado na thread atual para definir os dados, como mostrado na figura abaixo:
Causas do erro:Uma vez que uma thread é reutilizada, é provável que o primeiro valor obtido do ThreadLocal seja um valor remanescente de outras threads anteriores。
Porque, depois que terminarmos com o ThreadLocal na thread atual,Certifique-se de ligar para remover para uma purga oportuna。 Como mostrado abaixo:
Código:
(Fim)
|