suchen
HeimJavajavaLernprogrammJava ThreadLocal

Die Variablen, die von demselben Thread gelesen und geschrieben werden können, können mithilfe einer Klasse namens ThreadLocal-Klasse in Java erstellt werden, und zwar dann, wenn derselbe Code von den beiden Threads ausgeführt wird und der Code auf die Variablen desselben verweist ThreadLocal, die beiden Threads können diese Variablen von ThreadLocal nicht sehen und daher kann ein Code durch die Verwendung der ThreadLocal-Klasse threadsicher gemacht werden, und der Code wäre ohne die Verwendung der ThreadLocal-Klasse und einer Instanz der ThreadLocal-Klasse nicht threadsicher kann wie das Erstellen der Instanz einer anderen Klasse in Java mit dem neuen Operator erstellt werden.

Starten Sie Ihren kostenlosen Softwareentwicklungskurs

Webentwicklung, Programmiersprachen, Softwaretests und andere

Wie funktioniert die ThreadLocal-Klasse in Java?

Die Thread-lokale Variable wird von der Klasse java.lang.ThreadLocal in Java bereitgestellt. Diese Variablen unterscheiden sich von den normalen Variablen, sodass jeder Thread, der unabhängig und eigen ist und über eine Kopie der Variablen verfügt, die initialisiert wird, über die Methode „get“ oder „set“ auf sie zugreifen kann. Dies ist im Grunde eine der anderen Möglichkeiten, die Sicherheit des Threads zu erreichen, abgesehen vom Schreiben unveränderlicher Klassen.

Es gibt keine gemeinsame Nutzung des Objekts mehr und daher besteht keine Notwendigkeit für eine Synchronisierung, durch die die Leistung und Skalierbarkeit der Anwendung verbessert werden. Die ThreadLocal-Klasse in Java erweitert das Klassenobjekt. Die Erweiterung der lokalen Variablen, die eine Einschränkung des Threads darstellt, wird von der ThreadLocal-Klasse in Java bereitgestellt. Nur ein einzelner Thread kann ThreadLocal anzeigen. Die Threads des anderen Threads können die ThreadLocal-Variablen zweier Threads nicht sehen. Die ThreadLocal-Variablen gehören zum privaten Feld, das in Klassen statisch ist, und der Status wird innerhalb des Threads beibehalten.

Erstellung von ThreadLocal in Java

Die Instanz von ThreadLocal wird wie eine Instanz eines anderen Java-Objekts mit einem neuen Operator erstellt. Betrachten Sie die folgende Syntax, um ein ThreadLocal in Java zu erstellen:

private ThreadLocal variable_name = new ThreadLocal();

Die Erstellung von ThreadLocal muss nur einmal für einen Thread erfolgen. Die Werte können von mehreren Threads innerhalb dieses ThreadLocal festgelegt und dann abgerufen werden, und nur die vom Thread festgelegten Werte können für sich selbst gesehen werden.

ThreadLocal-Wert in Java abrufen

Der im ThreadLocal gespeicherte Wert kann mit seiner get()-Methode gelesen werden. Betrachten Sie die folgende Syntax, um einen ThreadLocal-Wert in Java zu erhalten:

String variable_name = (String) threadLocal.get();

ThreadLocal-Wert in Java festlegen

Der Wert, der nach seiner Erstellung im ThreadLocal gespeichert werden soll, kann mit der Methode set() festgelegt werden. Betrachten Sie die folgende Syntax, um einen ThreadLocal-Wert in Java festzulegen:

threadLocal.set("value_that_needs_to_be_set");

ThreadLocal-Wert in Java entfernen.

Der nach der Erstellung im ThreadLocal festgelegte Wert kann entfernt werden. Der ThreadLocal-Wert kann mithilfe der ThreadLocal-Methode „remove()“ entfernt werden. Betrachten Sie die folgende Syntax, um einen ThreadLocal-Wert zu entfernen, der in Java festgelegt ist:

threadLocal.remove();

Beispiele zur Implementierung von Java ThreadLocal

Im Folgenden werden Beispiele genannt:

Beispiel #1

Programm zur Demonstration der get()-Methode und der set()-Methode der ThreadLocal-Klasse:

Code:

//a class called demo is defined
public class Demo
{
//main method is called
public static void main(String[] args)
{
//an instance of the ThreadLocal is created for a number
ThreadLocal<number> local = new ThreadLocal<number>();
//an instance of the ThreadLocal is created for a string
ThreadLocal<string> val = new ThreadLocal<string>();
//setting the first number value using set() method
local.set(100);
//obtaining the current thread's value which returns a number using get() method
System.out.println("The number value that was set is = " + local.get());
//setting the second number value using set() method
local.set(90);
//obtaining the current thread's value which returns a numberusing get() method
System.out.println("The number value that was set is = " + local.get());
//setting the first string value using set() method
val.set("Welcome to ThreadLocal");
//obtaining the current thread's value which returns a stringusing get() method
System.out.println("The string value that was set is = " + val.get());
//setting the second string value using set() method
val.set("Learning is fun");
//obtaining the current thread's value which returns a stringusing get() method
System.out.println("The string value that was set is = " + val.get());
}
}</string></string></number></number>

Ausgabe:

Java ThreadLocal

Erklärung: Im obigen Programm ist eine Klasse namens Demo definiert. Anschließend wird die Hauptmethode definiert. Anschließend wird eine Instanz von ThreadLocal für eine Zahl erstellt. Anschließend wird eine Instanz von ThreadLocal für einen String erstellt. Anschließend wird der erste Zahlenwert mit der Methode set() festgelegt. Anschließend wird der Wert des aktuellen Threads, der eine Zahl zurückgibt, mithilfe der Methode get() ermittelt. Anschließend wird der zweite Zahlenwert mit der Methode set() gesetzt. Anschließend wird der Wert des aktuellen Threads, der eine Zahl zurückgibt, mithilfe der Methode get() ermittelt. Anschließend wird der erste Stringwert mit der Methode set() festgelegt. Dann wird der Wert des aktuellen Threads, der einen String zurückgibt, mit der Methode get() abgerufen. Anschließend wird der zweite Stringwert mit der Methode set() festgelegt. Dann wird der Wert des aktuellen Threads, der einen String zurückgibt, mit der Methode get() abgerufen. Die Ausgabe des Programms ist im Schnappschuss oben dargestellt.

Beispiel #2

Java-Programm zur Demonstration der Methode „remove()“ der ThreadLocal-Klasse:

Code:

//a class called demo is defined
public class Demo
{
//main method is called
public static void main(String[] args)
{
//an instance of the ThreadLocal is created for a number
ThreadLocal<number> local = new ThreadLocal<number>();
//an instance of the ThreadLocal is created for a string
ThreadLocal<string> val = new ThreadLocal<string>();
//setting the first number value using set() method
local.set(100);
//obtaining the current thread's value which returns a number using get() method
System.out.println("The first number value that was set is = " + local.get());
//setting the second number value using set() method
local.set(90);
//obtaining the current thread's value which returns a number using get() method
System.out.println("The second number value that was set is = " + local.get());
//setting the first string value using set() method
val.set("Welcome to ThreadLocal");
//obtaining the current thread's value which returns a string using get() method
System.out.println("The first string value that was set is = " + val.get());
//Using remove() method to remove the first string value that was set using set() method
val.remove();
//obtaining the current thread's value which returns a string using get() method
System.out.println("The first string value after using remove() method is = " + val.get());
//Using remove() method to remove the first number value and second number value that was set using set() method
local.remove();
//obtaining the current thread's value using get() method
System.out.println("The first number value and second number value after using remove() method is = " + local.get());
}
}</string></string></number></number>

Ausgabe:

Java ThreadLocal

Erklärung: Im obigen Programm ist eine Klasse namens Demo definiert. Anschließend wird die Hauptmethode definiert. Anschließend wird eine Instanz von ThreadLocal für eine Zahl erstellt. Anschließend wird eine Instanz von ThreadLocal für einen String erstellt. Anschließend wird der erste Zahlenwert mit der Methode set() festgelegt. Anschließend wird der Wert des aktuellen Threads, der eine Zahl zurückgibt, mithilfe der Methode get() ermittelt. Anschließend wird der zweite Zahlenwert mit der Methode set() gesetzt. Anschließend wird der Wert des aktuellen Threads, der eine Zahl zurückgibt, mithilfe der Methode get() ermittelt. Dann wird der erste String-Wert mit der set()-Methode festgelegt.

Dann wird die Methode „remove()“ verwendet, um den ersten String-Wert zu entfernen, der mit der Methode „set()“ festgelegt wurde. Dann wird der Wert des aktuellen Threads mit der Methode get() abgerufen und gibt null zurück, weil wir den Wert entfernt haben, der mit der Methode remove() festgelegt wurde. Dann wird die Methode „remove()“ verwendet, um den ersten Zahlenwert und den zweiten Zahlenwert zu entfernen, die mit der Methode „set()“ festgelegt wurden. Dann wird der Wert des aktuellen Threads mit der Methode get() abgerufen und gibt null zurück, weil wir die Werte entfernt haben, die mit der Methode remove() festgelegt wurden. Die Ausgabe des Programms ist im Schnappschuss oben dargestellt.

Vorteile der ThreadLocal-Klasse in Java

  • Die ThreadLocal-Klasse erleichtert die Aufgabe des Multithreadings, da der Status des Objekts nicht zwischen den Threads geteilt wird.
  • Eine Synchronisierung ist nicht erforderlich, da der Status des Objekts nicht zwischen den Threads geteilt wird.
  • ThreadLocal verhindert, dass ein Objekt mehreren Threads ausgesetzt wird.

Fazit

In diesem Tutorial verstehen wir das Konzept der ThreadLocal-Klasse durch Definition, die Funktionsweise der ThreadLocal-Klasse und ihre Methoden durch Programmierbeispiele und ihre Ausgaben.

Das obige ist der detaillierte Inhalt vonJava ThreadLocal. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Welche Aspekte der Java-Entwicklung sind plattformabhängig?Welche Aspekte der Java-Entwicklung sind plattformabhängig?Apr 26, 2025 am 12:19 AM

Javadevelopmentisnotentirelyplatform-unabhängig vonDuetoseveralfaktoren

Gibt es Leistungsunterschiede beim Ausführen von Java -Code auf verschiedenen Plattformen? Warum?Gibt es Leistungsunterschiede beim Ausführen von Java -Code auf verschiedenen Plattformen? Warum?Apr 26, 2025 am 12:15 AM

Der Java -Code hat Leistungsunterschiede, wenn Sie auf verschiedenen Plattformen ausgeführt werden. 1) Die Implementierungs- und Optimierungsstrategien von JVM sind unterschiedlich wie Oraclejdk und OpenJDK. 2) Die Eigenschaften des Betriebssystems wie Speicherverwaltung und Thread -Planung beeinflussen auch die Leistung. 3) Die Leistung kann durch Auswahl des entsprechenden JVM, Anpassung der JVM -Parameter und der Codeoptimierung verbessert werden.

Was sind einige Einschränkungen für die Unabhängigkeit der Plattform von Java?Was sind einige Einschränkungen für die Unabhängigkeit der Plattform von Java?Apr 26, 2025 am 12:10 AM

Java'splattformIndependenceHasLimitationssinformanceOverhead, Version CompatibilityISSues, Herausforderungen mit uneinhaltigem Integration, plattformspezifische Features und JvMinstallation/Wartung.

Erklären Sie den Unterschied zwischen der Unabhängigkeit der Plattform und der plattformübergreifenden Entwicklung.Erklären Sie den Unterschied zwischen der Unabhängigkeit der Plattform und der plattformübergreifenden Entwicklung.Apr 26, 2025 am 12:08 AM

PlattformIndependenCealLowsProgramstorunonanyPlatformWithoutModification, während der Plattformentwicklungspflicht-spezifische Anpassungen

Wie wirkt sich Just-in-Time (JIT) -Kompilation auf die Leistung von Java und die Plattformunabhängigkeit aus?Wie wirkt sich Just-in-Time (JIT) -Kompilation auf die Leistung von Java und die Plattformunabhängigkeit aus?Apr 26, 2025 am 12:02 AM

JitcompilationInjavaenHancesPerformanceWhilemaintainingPlattformindependence.1) ItdynamicalTranslatesByteCodeIntonativemachinecodeatruntime, optimierungFrequentusedCode.2) thejvmremainSpatform-unabhängig, und theAnamejavaaplicationTiclicationTiclicationTiclicationTiclicationTiclicationTiclicationToricticationTiclicationToryticleuneneen

Warum ist Java eine beliebte Wahl für die Entwicklung plattformübergreifender Desktop-Anwendungen?Warum ist Java eine beliebte Wahl für die Entwicklung plattformübergreifender Desktop-Anwendungen?Apr 25, 2025 am 12:23 AM

Javaispopularforcross-plattformdesktopapplicationsduetoits "writeonce, runanywhere" philosophy.1) itusesBytecodethatrunsonanyjvm-tequippedplatform.2) BibliothekenlikeswingandjavafxHelPcreeTsuokninguis.3) itsextsextSesiveSivestandsupports-Lyuis.3) itsextsextSesiveSivestandsupports-Lyuis.3) itsextsextSextsenSivestandsupports-Capo- und --3) itsextsextSextSesiveSivestandsuppandSpommes-Capo-

Besprechen Sie Situationen, in denen das Schreiben von Plattform-spezifischer Code in Java erforderlich ist.Besprechen Sie Situationen, in denen das Schreiben von Plattform-spezifischer Code in Java erforderlich ist.Apr 25, 2025 am 12:22 AM

Gründe für das Schreiben von plattformspezifischem Code in Java sind Zugriff auf bestimmte Betriebssystemfunktionen, die Interaktion mit spezifischer Hardware und die Optimierung der Leistung. 1) Verwenden Sie JNA oder JNI, um auf die Windows -Registrierung zuzugreifen. 2) mit Linux-spezifischen Hardware-Treibern über JNI zu interagieren; 3) Verwenden Sie Metal, um die Spiele auf MacOS über JNI zu optimieren. Das Schreiben von Plattform-spezifischer Code kann jedoch die Portabilität des Codes beeinflussen, die Komplexität erhöhen und potenziell Leistungsaufwand und Sicherheitsrisiken darstellen.

Was sind die zukünftigen Trends in der Java -Entwicklung, die sich auf die Unabhängigkeit der Plattform beziehen?Was sind die zukünftigen Trends in der Java -Entwicklung, die sich auf die Unabhängigkeit der Plattform beziehen?Apr 25, 2025 am 12:12 AM

Java wird die Unabhängigkeit der Plattform durch Cloud-native Anwendungen, die Bereitstellung von Multi-Plattform und die Interoperabilität von Cloud-nativen verbessern. 1) Native Cloud -Anwendungen verwenden Graalvm und Quarkus, um die Startgeschwindigkeit zu erhöhen. 2) Java wird auf eingebettete Geräte, mobile Geräte und Quantencomputer ausgedehnt. 3) Durch Graalvm wird sich Java nahtlos in Sprachen wie Python und JavaScript integrieren, um die Interoperabilität der Cross-Sprache zu verbessern.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

MinGW – Minimalistisches GNU für Windows

MinGW – Minimalistisches GNU für Windows

Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Leistungsstarke integrierte PHP-Entwicklungsumgebung

VSCode Windows 64-Bit-Download

VSCode Windows 64-Bit-Download

Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

PHPStorm Mac-Version

PHPStorm Mac-Version

Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool