Zum Hauptinhalt springen
Veröffentlicht am

Thread-Klasse in Java

Teilen:

Einführung

Multithreaded-Programmierung ist eine Technik, die es einer Anwendung ermöglicht, mehrere Operationen gleichzeitig auszuführen. In Java ist die Thread-Klasse das Rückgrat dieser Art von Programmierung.

Multithreading und Seine Vorteile

Multithreading kann durch die parallele Ausführung von Aufgaben die Leistung von Anwendungen erheblich steigern, insbesondere bei solchen, die intensive oder blockierende Operationen durchführen, wie den Zugriff auf Netzwerkressourcen. Weitere Vorteile sind:

  • Reaktionsfähigkeit: Eine Anwendung mit grafischer Benutzeroberfläche kann weiterhin auf den Benutzer reagieren, während sie rechenintensive Aufgaben im Hintergrund verarbeitet.
  • Ressourcen: Auf Systemen mit mehreren CPU-Kernen ermöglicht Multithreading einer Anwendung, die verfügbaren Kerne optimal auszunutzen.

Die Thread-Klasse Verstehen

Die Thread-Klasse stellt die Mittel bereit, um Threads zu erstellen, zu steuern und zu beenden. Zusätzlich zu den bereits erwähnten Methoden:

  • Thread.currentThread(): Gibt eine Referenz auf den aktuell laufenden Thread zurück.
  • Thread (Objekt).getState(): Gibt den aktuellen Zustand des Threads zurück.

Herausforderungen der Multithreaded-Programmierung

Obwohl leistungsstark, bringt die Multithreaded-Programmierung Herausforderungen mit sich:

  • Nebenläufigkeit: Die Notwendigkeit sicherzustellen, dass sich mehrere Threads beim Zugriff auf gemeinsam genutzte Ressourcen nicht gegenseitig beeinflussen.
  • Deadlocks: Situationen, in denen zwei oder mehr Threads aufeinander warten, was zu einem Stillstand führt.
  • Starvation: Wenn einem Thread dauerhaft der Zugriff auf Ressourcen verweigert wird und er nicht vorankommen kann.

Um diese Herausforderungen zu bewältigen, bietet Java verschiedene Werkzeuge, darunter das Paket java.util.concurrent.

Praktisches Beispiel

Das folgende Beispiel demonstriert die Erstellung und Steuerung von Threads mithilfe der Thread-Klasse:

package com.caffeinealgorithm.programaremjava;

public class ThreadKlasse {
  private Thread aufgabe;

  public void Run() {
    aufgabe = new Thread(this::aufgabeAusfuehren);
    aufgabe.start();

    for (int index = 1; index <= 5; index++) {
      System.out.printf("Run(): #%d\n", index);

      try {
        Thread.sleep(1000);
      }
      catch (InterruptedException ausnahme) {
        System.out.println(ausnahme);
      }
    }

    System.out.println("Die Aufgabe Run() ist abgeschlossen.");

    try {
      aufgabe.join();
    }
    catch (InterruptedException ausnahme) {
      System.out.println(ausnahme);
    }

    System.out.println("Die Aufgabe aufgabeAusfuehren() ist abgeschlossen.");
  }

  private void aufgabeAusfuehren() {
    for (int index = 1; index <= 10; index++) {
      System.out.printf("aufgabeAusfuehren(): #%d\n", index);

      try {
        Thread.sleep(1000);
      }
      catch (InterruptedException ausnahme) {
        System.out.println(ausnahme);
      }
    }
  }
}

/*
  Run(): #1
  aufgabeAusfuehren(): #1
  Run(): #2
  aufgabeAusfuehren(): #2
  Run(): #3
  aufgabeAusfuehren(): #3
  Run(): #4
  aufgabeAusfuehren(): #4
  Run(): #5
  aufgabeAusfuehren(): #5
  Die Aufgabe Run() ist abgeschlossen.
  aufgabeAusfuehren(): #6
  aufgabeAusfuehren(): #7
  aufgabeAusfuehren(): #8
  aufgabeAusfuehren(): #9
  aufgabeAusfuehren(): #10
  Die Aufgabe aufgabeAusfuehren() ist abgeschlossen.
*/

Fazit

Die Thread-Klasse ist ein unverzichtbares Werkzeug für jeden Java-Entwickler, der die Möglichkeiten der Multithreaded-Programmierung ausschöpfen möchte. Das Verständnis ihrer Methoden, Vorteile und Herausforderungen ist grundlegend für die Erstellung robuster, reaktionsfähiger und effizienter Anwendungen.

Happy coding!