Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 27855|Antwoord: 1

[Bron] Java ThreadLocal-principes en multithreaded hergebruik leiden tot data-overlast

[Link kopiëren]
Geplaatst op 01-11-2021 11:45:36 | | | |
In programmeren definiëren we methodeparameters om variabele inhoud door te geven; als het uitvoeringsmethodeniveau diep is, moet elke methode de parameters definiëren die doorgegeven moeten worden; op dit moment kunnen sommige variabelen door ThreadLocal worden gestuurd, zolang alle methoden op dezelfde thread worden uitgevoerd, kan de waarde van ThreadLocal worden ingesteld en gelezen.

De ThreadLocal-klasse wordt gebruikt om lokale variabelen binnen de thread te leveren. Wanneer deze variabelen worden benaderd (get/set) in een multithreaded omgeving, zijn de variabelen in elke thread relatief onafhankelijk van de variabelen in andere threads.

ThreadLocal haalt eerst de huidige thread op (Thread t = Thread.currentThread()) bij het uitvoeren van de set-methode, en gebruikt de huidige thread om een ThreadLocalMap te krijgen; als de map niet leeg is, betekent dit dat de huidige thread een eerder gebonden map heeft, waarna de waarde van deze map wordt bijgewerkt, zo niet, gebruikt zichzelf als sleutel om de waarde in de map te plaatsen, zodat de binding van variabelen en threads wordt gerealiseerd.



Test de code, stel de threadpool in op maximaal 5 threads, en wanneer we de ThreadLocal get-methode aanroepen in het geval van multithreading, krijgen we de ThreadLocal-data (Dataset van andere threads), onsDe ThreadLocal set-methode wordt niet aangeroepen op de huidige thread om de data in te stellen, zoals getoond in de onderstaande figuur:



Foutoorzaken:Zodra een thread wordt hergebruikt, is het waarschijnlijk dat de eerste waarde die uit ThreadLocal wordt verkregen, een overgebleven waarde is van andere eerdere threads

Want, nadat we klaar zijn met ThreadLocal in de huidige thread,Zorg ervoor dat je Remove belt voor tijdige zuivering。 Zoals hieronder getoond:



Code:

(Einde)





Vorig:Docker kijkt naar instellingen voor het herstarten van containers en bulk stop containers
Volgend:Jenkins (5) Projectgroeppresentatie
Geplaatst op 02-11-2021 21:30:12 |
Kom weer leren om te leren.
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com