Threadsichere Sammlungen in Java
In Java ist eine thread-safe
eine Klasse, die den internen Zustand der Klasse garantiert und dass die Werte der Methoden korrekt sind, während mehrere Threads gleichzeitig aufgerufen werden.
In diesem Tutorial werden verschiedene Sammlungsklassen anhand von Codebeispielen besprochen, die in Java threadsicher
sind.
Threadsichere Sammlungen in Java
In Java sind die beliebtesten threadsicheren
Sammlungsklassen Vector
, Stack
, Hashtable
, Properties
usw. Lernen wir jede von ihnen kennen, beginnend mit dem Vector
unten.
Threadsichere Sammlungsklasse - Vektor
Der Vektor
ist eine Anordnung von Objekten, die beliebig wachsen kann. Diese Klasse unterstützt mit Methoden wie add()
, remove()
, get()
, elementAt()
und size()
.
Beispielcode:
// Importing necessary packages
import java.util.*;
public class JavaVector {
public static void main(String[] arg) {
// Declaring a vector
Vector MyVector = new Vector();
// Adding data to vector
MyVector.add(12);
MyVector.add(3);
MyVector.add("ABC");
MyVector.add(10);
MyVector.add("DEF");
System.out.println("The vector is: " + MyVector);
// Removing data from the vector.
MyVector.remove(1);
System.out.println("The vector after removing an element is: " + MyVector);
}
}
Ausgang:
The vector is: [12, 3, ABC, 10, DEF]
The vector after removing an element is: [12, ABC, 10, DEF]
Thread-sichere Sammlungsklasse - Stack
Die Klasse Stack
implementiert die Stack-Datenstruktur. Es basiert auf dem LIFO
oder Last In First Out
. Die gebräuchlichste Operation der Klasse Stack
ist push()
, pop()
, empty()
und search()
.
Beispielcode:
// Importing necessary packages
import java.util.*;
public class JavaStack {
public static void main(String[] args) {
// Declaring a stack
Stack<Integer> MyStk = new Stack<Integer>();
// Adding data to stack
MyStk.push(5);
MyStk.push(7);
MyStk.push(9);
// POP from the stack
Integer num1 = (Integer) MyStk.pop();
System.out.println("The Popped element is: " + num1);
// PUSH the stack
Integer num2 = (Integer) MyStk.peek();
System.out.println("The top element is: " + num2);
}
}
Ausgang:
The popped element is: 9
The top element is: 7
Threadsichere Sammlungsklasse - Hashtable
Die Java-Klasse Hashtable
implementiert die Hash-Tabelle, die die Schlüssel
den Werten
zuordnet. Außerdem implementiert es die Schnittstelle Map
und erbt das Verzeichnis.
Beispielcode:
// Importing necessary packages
import java.util.*;
public class JavaHashtable {
public static void main(String args[]) {
// Declaring a HashTable
Hashtable<Integer, String> HTable = new Hashtable<Integer, String>();
// Adding data to HashTable
HTable.put(100, "This");
HTable.put(102, "is");
HTable.put(101, "a");
HTable.put(103, "data");
for (Map.Entry MyMap : HTable.entrySet()) {
// Extracting data and keys from the HashTable
System.out.println(MyMap.getKey() + " " + MyMap.getValue());
}
}
}
Ausgang:
103 data
102 is
101 a
100 This
Thread-sichere Sammlungsklasse - Synchronize HashMap
Es gibt eine synchronisierte Version von HashMap
, die Sie als thread-sichere
Sammlung in Java verwenden können. Diese HashMap
funktioniert am ähnlichsten wie die Synchronize HashMap
.
Beispielcode:
// Importing necessary packages
import java.util.*;
public class JavaHashMap {
public static void main(String[] args) throws Exception {
try {
// Declaring a HashMap
Map<String, String> HMap = new HashMap<String, String>();
// Adding values to the HashMap
HMap.put("1", "This");
HMap.put("2", "is");
HMap.put("3", "a");
HMap.put("4", "sample");
HMap.put("5", "data");
// Printing the value of HashMap
System.out.println("The Map is : " + HMap);
// Synchronizing the HashMap
Map<String, String> SMap = Collections.synchronizedMap(HMap);
// Printing the Collection after synchronizing the HashMap
System.out.println("The synchronized map is : " + SMap);
} catch (IllegalArgumentException e) {
// Printing exception if necessary
System.out.println("Exception thrown : " + e);
}
}
}
Ausgang:
The Map is : {1=This, 2=is, 3=a, 4=sample, 5=data}
The synchronized map is : {1=This, 2=is, 3=a, 4=sample, 5=data}
Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.
LinkedIn