Multithreading in Java – Lernen Sie anhand von Beispielen

Veröffentlicht: 2022-06-23

Java ist eine Programmiersprache, die Multithread-Programme unterstützt. Multithreaded-Programme umfassen zwei oder mehr Teile (Threads), die gleichzeitig ausgeführt werden, unterschiedliche Aufgaben ausführen und eine optimale CPU-Auslastung ermöglichen. Multithreading ist eine Erweiterung von Multitasking. Multitasking kann als eine Funktion definiert werden, bei der sich mehrere Prozesse eine gemeinsame Verarbeitungsressource wie eine zentrale Verarbeitungseinheit teilen.

Multithreading verzweigt das Konzept des Multitaskings auf verschiedene Anwendungen, bei denen definierte Operationen in kleinere einzelne Threads zerlegt werden können.

Jeder dieser Threads wird gleichzeitig und unabhängig mit unterschiedlichen Ausführungspfaden ausgeführt, sodass eine Ausnahme in einem Thread die Leistung anderer nicht beeinträchtigt.

Lernen Sie Softwareentwicklungskurse online von den besten Universitäten der Welt. Verdienen Sie Executive PG-Programme, Advanced Certificate-Programme oder Master-Programme, um Ihre Karriere zu beschleunigen.

Inhaltsverzeichnis

Was ist Multithreading in Java?

Beim Multithreading in Java werden mehrere Threads gleichzeitig ausgeführt, um die CPU-Zeit zu maximieren.

Lebenszyklus eines Fadens

Threads haben verschiedene Stadien in ihrem Lebenszyklus. Sie sind wie folgt:

  • Neu: Der Thread beginnt seinen Lebenszyklus als neuer Thread. Es bleibt in diesem neugeborenen Stadium, bis ein Programm den Thread ausführt.
  • Ausführbar: Ein geborener Thread tritt in die ausführbare Phase ein, wenn ein Programm ihn initiiert. Der Thread beginnt in dieser Phase mit der Ausführung seiner Aufgabe.
  • Warten: Dies ist eine Übergangsphase, in der ein Thread darauf wartet, dass ein anderer Thread seine Aufgabe abschließt. Ein Thread in der Wartephase wechselt in eine lauffähige Phase, nachdem er ein Signal von anderen Threads empfangen hat.
  • Zeitgesteuertes Warten: Dies ist eine Phase, in die ein lauffähiger Thread für ein bestimmtes Zeitintervall eintreten kann. Threads in dieser Phase kehren am Ende des bestimmten Zeitintervalls in die ausführbare Phase zurück.
  • Tot: Dies ist die letzte Phase im Lebenszyklus eines Threads. Ein Thread tritt in diese Phase ein, nachdem er seine Aufgabe abgeschlossen hat.

Vorteile von Multithreading in Java

  • Da Threads in Java unabhängig sind, blockiert Java-Multithreading die Benutzer nicht und sie können viele Operationen gleichzeitig ausführen.
  • Da Multithreading in Java mehrere Operationen ermöglicht, ist es zeitsparend und effizient.
  • Das Programm kann kontinuierlich laufen, auch wenn ein Teil davon abgefangen wird.
  • Es verbessert die Leistung gegenüber herkömmlichen parallelen Programmen, die mehrere Prozesse verwenden.
  • Erstellen von effizienten Programmen, die die CPU-Zeit voll ausnutzen.
  • Verbessert die Reaktionszeit komplexer Anwendungen erheblich.
  • Benötigt weniger Ressourcen im Vergleich zu herkömmlichen parallelen Programmen.

Reihenfolge der Thread-Priorität

Das Betriebssystem bestimmt den Ausführungszeitplan des Threads basierend auf der Priorität des Threads. Die Priorität eines Threads wird basierend auf dem Wert seiner Konstante bestimmt.

  • Konstante 1 erhält minimale Priorität ( MIN_PRIORITY)
  • Konstante 5 erhält normale Priorität (NORM_PRIORITY)
  • Konstante 10 erhält die maximale Priorität (MAX_PRIORITY)

Beliebte Kurse und Artikel zum Thema Softwareentwicklung

Beliebte Programme
Executive PG-Programm in Softwareentwicklung - IIIT B Blockchain-Zertifikatsprogramm - PURDUE Programm für Cybersicherheitszertifikate - PURDUE MSC in Informatik - IIIT B
Andere beliebte Artikel
Gehalt als Cloud Engineer in den USA 2021-22 Gehalt als AWS-Lösungsarchitekt in den USA Backend-Entwicklergehalt in den USA Front-End-Entwicklergehalt in den USA
Gehalt für Webentwickler in den USA Fragen im Vorstellungsgespräch für Scrum Master im Jahr 2022 Wie starte ich 2022 eine Karriere in der Cybersicherheit? Karrieremöglichkeiten in den USA für Ingenieurstudenten

Wie erstelle ich einen Thread in Java?

Threads können in Java auf zwei Arten erstellt werden:

  1. Erweiterung der Thread-Klasse
  2. Implementieren einer lauffähigen Schnittstelle

Erstellen eines Threads durch Erweitern der Thread-Klasse

Einige Methoden der Thread-Klasse und ihre Funktionen sind unten angegeben.

  • getName() : Zum Abrufen des Namens des Threads
  • getPriority(): Um die Priorität des Threads zu erhalten
  • is Alive(): um herauszufinden, ob ein Thread läuft
  • join(): Warte auf die Beendigung eines Threads
  • run() : Eintrittspunkt des Threads
  • sleep(): Zum Anhalten eines Threads für ein bestimmtes Zeitfenster.
  • start() : Um einen Thread durch seine run() Methode zu aktivieren.

Schritt 1 : Überschreiben Sie die run()-Methode, die in der Thread-Klasse angegeben ist. Dies fungiert als Einstiegspunkt für den Thread, und die gesamte Programmlogik sollte in 4this eingeschlossen sein.

Die Syntax der Methode run() lautet wie folgt:

öffentlicher Leerlauf ( )

Schritt 2: Initiieren Sie das Thread-Objekt durch die Methode start () , deren Syntax void start ( ) ist .

Hier sind Beispiele für ein Multithreading-Programm in Java:

Beispiel 1:

Klasse MultithreadingDemo erweitert Thread{

öffentlich void run () {

System.out.println(“Mein Thread läuft.”);

}

public static void main(String args[]){

Multithreading-Demo obj=neue Multithreading-Demo();

obj.start();

}

}

Die Ausgabe des obigen Programms wird sein:

Mein Thread läuft.

Beispiel 2:

Klasse Count erweitert Thread

{

Zählen()

{

super("mein Thread wird erweitert");

System.out.println(“mein Thread wird erstellt” + this);

Anfang();

}

öffentliche Leere ausführen ()

{

Versuchen

{

für (int i=0 ;i<10;i++)

{

System.out.println("Drucken der Zählung" + i);

Thread.sleep (1000);

}

}

catch(InterruptedException e)

{

System.out.println(“mein Thread wurde unterbrochen”);

}

System.out.println("Mein Thread ist beendet" );

}

}

Klasse ExtendingExample

{

public static void main(String args[])

{

Anzahl cnt = neue Anzahl ();

Versuchen

{

while(cnt.isAlive())

{

System.out.println("Haupt-Thread wird am Leben bleiben, bis der untergeordnete Thread lebt");

Thread.sleep (1500);

}

}

catch(InterruptedException e)

{

System.out.println("Hauptthread wurde unterbrochen");

}

System.out.println("Lauf des Haupt-Threads wird beendet" );

}

}

Die Ausgabe des obigen Programms wird sein

Mein Thread wird erstelltThread[mein ausführbarer Thread,5,main]

Der Haupt-Thread bleibt aktiv, bis der untergeordnete Thread lebt

Drucken der Zählung 0

Drucken der Zählung 1

Der Haupt-Thread bleibt aktiv, bis der untergeordnete Thread lebt

Drucken der Zählung 2

Der Haupt-Thread bleibt aktiv, bis der untergeordnete Thread lebt

Drucken der Zählung 3

Drucken der Zählung 4

Der Haupt-Thread bleibt aktiv, bis der untergeordnete Thread lebt

Drucken der Zählung 5

Der Haupt-Thread bleibt aktiv, bis der untergeordnete Thread lebt

Drucken der Zählung 6

Drucken der Zählung 7

Der Haupt-Thread bleibt aktiv, bis der untergeordnete Thread lebt

Drucken der Zählung 8

Der Haupt-Thread bleibt aktiv, bis der untergeordnete Thread lebt

Drucken der Zählung 9

Mein Thread-Lauf wird beendet

Haupt-Thread-Lauf wird beendet

Erstellen eines Threads durch Implementieren einer ausführbaren Schnittstelle

Es gibt drei wichtige Schritte, die bei der Verwendung dieser Methode befolgt werden müssen.

Schritt 1 : Eine run()-Methode sollte durch eine lauffähige Schnittstelle implementiert werden. Diese run()-Methode fungiert als Einstiegspunkt für den Thread und sollte die gesamte Programmlogik enthalten.

Syntax für die Methode run() ist

öffentlicher Leerlauf ( )

Schritt 2: Ein Thread-Objekt sollte mit dem unten angegebenen Konstruktor aktiviert werden.

Thread (Laufbares threadObj, String threadName);

Hier fungiert threadObj als die Klasse, die die ausführbare Schnittstelle implementiert, und Threadname ist der Name, der dem neuen Thread gegeben wird.

Schritt 3: Nach dem Erstellen des Thread-Objekts kann es durch die Methode start() initiiert werden, die die Methode run() ausführt.

Die Syntax der Methode start() lautet wie folgt.

void start();

Ein Beispiel für das Erstellen eines Threads durch Implementieren einer lauffähigen Schnittstelle finden Sie hier .

Um mehr über Java-Multithreading und Softwareentwicklung zu erfahren, empfehlen wir die Anmeldung zum Executive Post Graduate Program in Software Development , das vom IIIT Bangalore in Zusammenarbeit mit upGrad angeboten wird.

Das Executive PG Program in Software Development ist ein 13-monatiges Online-Programm, das Berufstätigen helfen soll, durch branchenrelevante Fallstudien und Projekte einen großen Sprung in ihrer Karriere zu machen. Das Programm umfasst auch über zehn Live-Sitzungen von Branchenexperten, um den Kandidaten zu helfen, besser zu lernen.

Das Programm umfasst Industrieprojekte, um den Kandidaten zu helfen, praktische Erfahrungen und eine angemessene Branchenpräsenz zu sammeln, um ihr Lernen relevant und praxisnah zu machen. Der Abschluss des Programms belohnt die Kandidaten mit der begehrten IIIT B-Zertifizierung und dem Alumni-Status.

Das Programm umfasst eine 360-Grad-Vermittlungsunterstützung von upGrad, die über 40.000 bezahlte Lernende aus allen Teilen der Welt beeinflusst hat, um die Dinge noch besser zu machen. upGrad hat eine Basis von Lernenden aus über 85 Ländern und bietet eine unbezahlbare Gelegenheit, ein globales Peer-Netzwerk für die Kandidaten zu haben.

Was ist der Unterschied zwischen Multitasking und Multithreading in Java?

Multitasking ist der Prozess, bei dem viele Aufgaben gleichzeitig ausgeführt werden können, und Multithreading ist der Prozess der gleichzeitigen Ausführung mehrerer Threads, wobei jeder Thread eine andere Aufgabe ausführt.

Wird Mehrfachvererbung von Java unterstützt?

Die Programmiersprache Java unterstützt Mehrfachvererbung, ein Verfahren, bei dem eine Klasse mehr als eine Schnittstelle implementiert. Eine Klasse kann verschiedene Implementierungen einer Methode (Standard oder statisch) in den Schnittstellen haben. Mehrfachvererbung kann in Java im Gegensatz zur Sprache C++ nur mit Interfaces und nicht mit Klassen implementiert werden.

Kann Multithreading die Leistung von Java verbessern?

Multithreading verbessert die Leistung von Java, indem es mehreren CPUs ermöglicht wird, sich um dasselbe Problem zu kümmern. Dies beschleunigt nicht nur den Prozess, sondern hilft auch bei der effizienten Problemlösung.