Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 27855|Resposta: 1

[Fonte] Os princípios do Java ThreadLocal e o reuso multithread levam à desordem de dados

[Copiar link]
Publicado em 01/11/2021 11:45:36 | | | |
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)





Anterior:O Docker analisa as configurações de reinício de contêineres e contêineres de paragem em massa
Próximo:Jenkins (5) Apresentação do grupo do projeto
Publicado em 02/11/2021 21:30:12 |
Venha aprender de novo.
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com