Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 27855|Antwort: 1

[Quelle] Java-ThreadLocal-Prinzipien und Multithread-Wiederverwendung führen zu Datenüberlastung

[Link kopieren]
Veröffentlicht am 01.11.2021 11:45:36 | | | |
In der Programmierung definieren wir Methodenparameter, um Variableninhalte zu übergeben. Wenn die Ausführungsmethode tief ist, muss jede Methode die zu übergebenden Parameter definieren. Zu diesem Zeitpunkt können einige Variablen durch ThreadLocal weitergeleitet werden, solange alle Methoden im selben Thread ausgeführt werden, kann der Wert von ThreadLocal gesetzt und gelesen werden.

Die ThreadLocal-Klasse wird verwendet, um lokale Variablen innerhalb des Threads bereitzustellen. Wenn diese Variablen in einer Multi-Thread-Umgebung abgerufen (get/set) werden, sind die Variablen in jedem Thread relativ unabhängig von den Variablen in anderen Threads.

ThreadLocal erhält zunächst den aktuellen Thread (Thread t = Thread.currentThread()) beim Ausführen der Set-Methode und verwendet den aktuellen Thread, um einen ThreadLocalMap zu erhalten; wenn die Abbildung nicht leer ist, bedeutet das, dass der aktuelle Thread eine zuvor gebundene Abbildung hat, aktualisiert dann den Wert dieser Map, andernfalls verwendet er sich selbst als Schlüssel, um den Wert in die Map einzufügen, um die Bindung von Variablen und Threads zu realisieren.



Teste den Code, setze den Threadpool auf maximal 5 Threads, und wenn wir im Fall von Multithreading die ThreadLocal-Get-Methode aufrufen, erhalten wir die ThreadLocal-Daten (Datensatz anderer Threads), usDie ThreadLocal-Set-Methode wird auf dem aktuellen Thread nicht aufgerufen, um die Daten festzulegen., wie in der untenstehenden Abbildung dargestellt:



Fehlerursachen:Sobald ein Thread wiederverwendet wird, ist es wahrscheinlich, dass der erste aus ThreadLocal erhaltene Wert ein Wert, der von anderen früheren Threads übrig geblieben ist

Denn nachdem wir mit ThreadLocal im aktuellen Thread fertig sind,Rufen Sie unbedingt die Entfernung an, um rechtzeitig zu reinigen。 Wie unten gezeigt:



Code:

(Ende)





Vorhergehend:Docker schaut sich die Container-Neustarteinstellungen und Bulk-Stop-Container an
Nächster:Jenkins (5) Projektgruppenpräsentation
Veröffentlicht am 02.11.2021 21:30:12 |
Komm, um es wieder zu lernen.
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com