Threadsichere Sammlungen in Java

MD Aminul Islam 12 Oktober 2023
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}
MD Aminul Islam avatar MD Aminul Islam avatar

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

Verwandter Artikel - Java Collection