Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 27855|Odpověď: 1

[Zdroj] Java ThreadLocal principy a vícevláknové opětovné použití vedou k datovému nepořádku

[Kopírovat odkaz]
Zveřejněno 01.11.2021 11:45:36 | | | |
V programování definujeme parametry metody pro předávání obsahu proměnných, pokud je úroveň metody vykonání hluboká, každá metoda musí definovat parametry, které mají být předány. V tomto okamžiku lze některé proměnné předávat přes ThreadLocal, pokud jsou všechny metody vykonávány ve stejném vlákně, lze nastavit a přečíst hodnotu ThreadLocal.

Třída ThreadLocal slouží k poskytování lokálních proměnných uvnitř vlákna. Když jsou tyto proměnné přístupné (get/set) v prostředí s více vlákny, proměnné v každém vlákně jsou relativně nezávislé na proměnných v ostatních vláknech.

ThreadLocal nejprve získá aktuální vlákno (Thread t = Thread.currentThread()) při spuštění metody set a použije aktuální vlákno k získání ThreadLocalMap, pokud mapa není prázdná, znamená to, že aktuální vlákno má dříve vázanou mapu, poté aktualizuje hodnotu této mapy, pokud ne, použije samo sebe jako klíč k vložení hodnoty do mapy, aby bylo možné realizovat vázání proměnných a vláken.



Otestujte kód, nastavte pool vláken tak, aby udržoval maximálně 5 vláken, a když zavoláme metodu get ThreadLocal v případě vícevláknového zpracování, dostaneme data ThreadLocal (Data setová jinými vlákny), usMetoda ThreadLocal set není volána v aktuálním vlákně k nastavení dat, jak je znázorněno na obrázku níže:



Chyba způsobuje:Jakmile je vlákno znovu použito, je pravděpodobné, že první hodnota získaná z ThreadLocal je hodnota, která zůstala z předchozích vláken

Protože po dokončení s ThreadLocal v aktuálním vlákně,Nezapomeňte zavolat odstranění kvůli včasnému vyčištění。 Jak je uvedeno níže:



Kód:

(Konec)





Předchozí:Docker se zaměřuje na nastavení restartu kontejnerů a kontejnery hromadného zastavení
Další:Jenkins (5) Prezentace projektové skupiny
Zveřejněno 02.11.2021 21:30:12 |
Přijďte se znovu učit.
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com