Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 27855|Odpoveď: 1

[Zdroj] Java ThreadLokálne princípy a viacvláknové opätovné použitie vedú k dátovému chaosu

[Kopírovať odkaz]
Zverejnené 1. 11. 2021 11:45:36 | | | |
V programovaní definujeme parametre metódy tak, aby sme odovzdali obsah premenných, ak je úroveň vykonávacej metódy hlboká, každá metóda musí definovať parametre, ktoré majú byť odovzdané; v tomto momente je možné niektoré premenné prejsť cez ThreadLocal, pokiaľ sú všetky metódy vykonávané na rovnakom vlákne, hodnota ThreadLocal sa môže nastaviť a čítať.

Trieda ThreadLocal sa používa na poskytovanie lokálnych premenných vo vnútri vlákna. Keď sú tieto premenné prístupné (get/set) v prostredí s viacvláknovým prostredím, premenné v každom vlákne sú relatívne nezávislé od premenných v iných vláknach.

ThreadLocal najskôr získa aktuálne vlákno (Thread t = Thread.currentThread()) pri vykonávaní metódy set a použije aktuálne vlákno na získanie ThreadLocalMap, ak mapa nie je prázdna, znamená to, že aktuálne vlákno má predtým viazanú mapu, potom aktualizuje hodnotu tejto mapy, ak nie, použije samo seba ako kľúč na vloženie hodnoty do mapy, aby sa realizovalo viazanie premenných a vlákien.



Otestujte kód, nastavte pool vlákien tak, aby udržiaval maximálne 5 vlákien, a keď zavoláme metódu get ThreadLocal v prípade viacvláknového spracovania, dostaneme dáta ThreadLocal (Dátová sada iných vlákien), usMetóda ThreadLocal set sa na aktuálnom vlákne nevolá na nastavenie dát, ako je znázornené na obrázku nižšie:



Chyba spôsobuje:Keď je vlákno opätovne použité, je pravdepodobné, že prvá hodnota získaná z ThreadLocal je hodnota, ktorá zostala z predchádzajúcich vlákien

Pretože, keď skončíme s ThreadLocal na aktuálnom vlákne,Nezabudnite zavolať na odstránenie kvôli včasnému vyčisteniu。 Ako je uvedené nižšie:



Kód:

(Koniec)





Predchádzajúci:Docker sa pozerá na nastavenia reštartu kontajnerov a kontajnery hromadného zastavenia
Budúci:Prezentácia projektovej skupiny Jenkins (5)
Zverejnené 2. 11. 2021 21:30:12 |
Príď sa znova učiť.
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com