Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 27855|Svar: 1

[Källa] Java ThreadLocal-principer och flertrådad återanvändning leder till datastörningar

[Kopiera länk]
Publicerad på 2021-11-01 11:45:36 | | | |
Inom programmering definierar vi metodparametrar för att skicka variabelinnehåll, om exekveringsmetodnivån är djup måste varje metod definiera parametrarna som ska skickas, vid denna tidpunkt kan vissa variabler skickas genom ThreadLocal, så länge alla metoder körs på samma tråd kan värdet på ThreadLocal sättas och läsas.

Klassen ThreadLocal används för att tillhandahålla lokala variabler inuti tråden. När dessa variabler nås (get/set) i en multitrådad miljö är variablerna i varje tråd relativt oberoende av variablerna i andra trådar.

ThreadLocal hämtar först den aktuella tråden (Thread t = Thread.currentThread()) när set-metoden körs, och använder den aktuella tråden för att hämta en ThreadLocalMap, om kartan inte är tom betyder det att den aktuella tråden har en tidigare bunden karta, sedan uppdateras värdet på denna karta, annars används den själv som nyckel för att lägga värdet i kartan, för att realisera bindningen av variabler och trådar.



Testa koden, ställ in trådpoolen att upprätthålla maximalt 5 trådar, och när vi anropar ThreadLocal get-metoden i fallet med multitrådning, får vi ThreadLocal-data (Datamängd från andra trådar), ossThreadLocal-setmetoden anropas inte på den aktuella tråden för att sätta datan, som visas i figuren nedan:



Felorsaker:När en tråd återanvänds är det troligt att det första värdet som erhålls från ThreadLocal är ett värde som finns kvar från andra tidigare trådar

För efter att vi är klara med ThreadLocal i den aktuella tråden,Se till att ringa borttagning för snabb rensning。 Som visas nedan:



Kod:

(Slut)





Föregående:Docker tittar på inställningar för containeromstart och bulk stop-containrar
Nästa:Jenkins (5) Projektgrupppresentation
Publicerad på 2021-11-02 21:30:12 |
Kom för att lära dig igen.
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com