Multithreading in Java | Erklärt

Multithreading in Java | Erklärt
Java bietet eine Funktion namens Multithreading, die eine gleichzeitige Ausführung mehrerer Threads ermöglicht. Multithreading wird häufig verwendet, da Threads den gemeinsam genutzten Speicherbereich verwenden und daher keinen einzelnen Speicher für jeden Thread zuordnen müssen, es speichert und eine schnelle Ausführung durchführt. Die häufigsten Anwendungsfälle von Multithreading in der realen Welt beinhalten Computerspiele, Animationen usw.

In diesem Artikel wird eine vollständige Anleitung zum Multithreading in Java vorgestellt und für ein tiefes Verständnis die folgenden Konzepte abdecken:

  • Was ist Multithreading in Java
  • Warum Multithreading in Java wichtig ist
  • Lebenszyklus von Fäden in Java
  • Java-Build-In-Methoden für Multithreading
  • Praktische Implementierung von Multithreading in Java

Also lasst uns anfangen!

Was ist Multithreading

Es ist ein Prozess, der es uns ermöglicht, mindestens zwei Threads gleichzeitig auszuführen, und es wird auch als Parallelität in Java bezeichnet. Java multithreading maximiert die CPU. Darüber hinaus speichert es den Speicher wie beim Multithreading, dass es keinen separaten Speicher für mehrere Threads zuordnen muss.

Warum Multithreading in Java wichtig ist

Multithreading bietet eine breite Palette von Merkmalen und die Bedeutung des Java-Multithreading kann anhand der unterlisteten Merkmale bewertet werden:

  • Java Multithreading ermöglicht die Freigabe von Ressourcen. Innerhalb eines Prozesses können mehrere Ressourcen gemeinsam genutzt werden, z. B. Code, Speicher, Dateien, Daten usw.
  • Themen sind unabhängig, daher würden Ausnahmen, die in einem Thread aufgetreten sind.
  • Mit Multithreading in Java kann ein Programm auch dann ausgeführt werden, wenn ein bestimmtes Stück des Programms aus irgendeinem Grund blockiert wird oder eine lange Aufgabe/einen langwierigen Betrieb ausführt.
  • Es spart Zeit, da mehrere Aufgaben/Operationen gleichzeitig ausgeführt werden können.

Hier sind nur wenige Funktionen aufgeführt. Es gibt jedoch viele weitere wie Skalierbarkeit, Kosteneffizienz usw. das zeigt die Dominanz des Multithreading.

Lebenszyklus von Fäden in Java

Ab sofort haben wir gelernt, was Multithreading ist und warum es in Java so wichtig ist? Jetzt werden wir den Lebenszyklus des Threads kennenlernen, der aus verschiedenen Zuständen besteht, wie unten aufgeführt:

Neu: In diesem Zustand wird ein Thread mit dem initiiert/erstellt "Gewinde" Klasse oder "Runnable" Schnittstelle. Es bleibt in diesem Zustand, bis ein Programm startet/initiiert einen Thread.

Laufbar: Innerhalb dieses Zustands wird die Instanz des Threads mithilfe einer integrierten Methode start () aufgerufen und der Thread bleibt im Laufstatus, bis eine Aufgabe ausgeführt wird.

Betrieb: In diesem Zustand startet ein Thread die Ausführung.

Warten: Innerhalb dieser Phase geht der Faden in einen vorübergehend inaktiven Zustand, was bedeutet, dass entweder ein Faden schläft, wartet oder in einem blockierten Zustand.

Kündigt/tot: Ein Thread tritt in diesen Zustand ein, wenn eine Ausnahme eintritt oder wenn der Thread seine Ausführung/Verarbeitung abschließt.

Java-Build-In-Methoden für Multithreading

Es gibt eine Liste von vordefinierten Java -Methoden, die in den Threads verwendet werden können, um unterschiedliche Funktionen zu erreichen. Einige häufig verwendete Methoden sind in der folgenden Tabelle aufgeführt:

Methodenname Beschreibung
Start() Es wird verwendet, um die Ausführung des Threads zu starten.
laufen() führt spezifische Aktionen für einen Thread aus.
GetName () Gibt den Namen des Threads zurück.
Ertrag () Halt den aktuellen Thread und ermöglicht es anderen, auszuführen.
SetPriority (int NewPriority) Gibt die Priorität des Threads an.
GetPriority () Gibt die Priorität des Threads zurück.
Schlaf (int Millisekunden) Schläft den Faden für einen bestimmten Zeitraum.
getid () Gibt die ID des Threads zurück.

Praktische Implementierung von Multithreading in Java

Jetzt ist es Zeit, das Konzept des Java -Multithreading mithilfe der praktischen Implementierung zu verstehen. Wir werden also ein Beispiel in Betracht ziehen, in dem wir Multithreading durchführen und einige der oben genannten integrierten Methoden verwenden.

Beispiel

In diesem Beispiel werden wir das Multithreading durch die Implementierung der Runnable -Schnittstelle durchführen:

öffentliche Klasse MultithreadingExample implementiert Runnable
@Override
public void run ()

public static void main (String [] args)
ThreadObj1 = neuer Thread ("Thread1");
ThreadObj2 = neuer Thread ("Thread2");
ThreadObj1.Start();
ThreadObj2.Start();
System.aus.println ("Name des ersten Threads:" + ThreadObj1.GetName ());
System.aus.println ("Name des zweiten Threads:" + ThreadObj2.GetName ());

Im obigen Code -Snippet implementieren wir die Java Runnable -Schnittstelle und innerhalb der Klasse verwenden wir die @Override Annotation, die zeigt, dass die "MultithreadingExample" überschreibt die laufen() Methode der Runnable -Schnittstelle. Anschließend erstellen wir mehrere Threads und starten die Ausführung des Threads mit der Start() Methode. Schließlich erhalten wir die Namen des Threads mit dem GetName () Methode und drucken Sie sie wie im folgenden Snippet gezeigt:

Dies überprüft die Arbeit von Multi-Threads in Java.

Im obigen Beispiel führen wir Multithreading durch Implementierung durch Laufbar Schnittstelle. Wir können jedoch auch Multithreading durchführen, indem wir eine vordefinierte Ausdehnung durchführen Gewinde Klasse, wie im folgenden Snippet gezeigt:

öffentliche Klasse Multithreadingxample erweitert Thread

Durch Erweiterung der Thread -Klasse können Sie die Funktionen der vordefinierten Java -Methoden in Anspruch nehmen.

Abschluss

Multithreading ermöglicht die gleichzeitige Ausführung von zwei oder mehr Threads, die die CPU -Nutzung maximiert, Zeit, Speicher usw. spart. Multithreading kann durch Erweiterung oder Implementierung der Thread -Klasse oder der Runnable -Schnittstelle durchgeführt werden. Verschiedene integrierte Methoden der Thread-Klasse und der Runnable-Schnittstelle können im Multithreading verwendet werden, um verschiedene Funktionen wie das Anhalten des aktuellen Threads und die Ausführung anderer Threads, die Priorität für die Threads usw. zu ermöglichen.
Diese Beschreibung erklärt verschiedene Aspekte des Multithreading, z.