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
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.
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.
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();
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");
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();
Im Folgenden werden Beispiele genannt:
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()); } }
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.
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()); } }
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.
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!