Heim > Java > javaLernprogramm > Hauptteil

Java ThreadLocal

WBOY
Freigeben: 2024-08-30 16:03:25
Original
584 Leute haben es durchsucht

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();
Nach dem Login kopieren

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();
Nach dem Login kopieren

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");
Nach dem Login kopieren

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();
Nach dem Login kopieren

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());
}
}
Nach dem Login kopieren

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());
}
}
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage