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:
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:
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!

Javadevelopmentisnotentirelyplatform-unabhängig vonDuetoseveralfaktoren

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.

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

PlattformIndependenCealLowsProgramstorunonanyPlatformWithoutModification, während der Plattformentwicklungspflicht-spezifische Anpassungen

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

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

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.

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.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

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

Heißer Artikel

Heiße Werkzeuge

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
Leistungsstarke integrierte PHP-Entwicklungsumgebung

VSCode Windows 64-Bit-Download
Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

SAP NetWeaver Server-Adapter für Eclipse
Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

PHPStorm Mac-Version
Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool
