Wie erstelle ich einen Thread in Java? | Multithreading in Java
Veröffentlicht: 2020-12-29In diesem Artikel werfen wir einen Blick auf das Threading in Java und untersuchen die Mechanismen, die das Threading ermöglichen.
Inhaltsverzeichnis
Threading in Java
Die Threading-Funktion in Java ist ein leichtgewichtiger Unterprozess. Sie gilt als die kleinste Verarbeitungseinheit. Es ist ein Mittel, um Multitasking in einem Programm zu erreichen. Es ist eine nützliche Funktion, wenn es um Spiele, Animationen usw. geht.
Java verfügt über eine integrierte Unterstützung zum Erstellen von Threads und Multi-Threads. Dies ist ein cleverer Ansatz zur Minimierung von Ineffizienzen und Schleppen durch optimale Nutzung des CPU-Platzes. In Java kann dies auf zwei Arten erfolgen:
- Thread-Klasse erweitern, oder
- Implementieren Sie eine lauffähige Schnittstelle
Wenn mehrere Threads gleichzeitig ausgeführt werden, spricht man von Multithreading. Dies ermöglicht im Wesentlichen, dass mehrere Teile eines Programms gleichzeitig ausgeführt werden, jeder Teil eines Threads und jeder Thread folgt einem bestimmten Pfad zur Ausführung.
Threads nutzen gemeinsam genutzten Speicherplatz; Speicher wird nicht jedem Teil zugewiesen, was zu einer maximalen Auslastung der CPU führt. Außerdem nimmt das Ändern von Kontexten nicht viel Zeit in Anspruch. Allerdings könnten zu viele Threads Ihre CPU mit Kontextwechseln belasten und Ihre Ausführung könnte verzögert werden.
Ein Thread kann in einem der folgenden sechs Zustände existieren
- NEU – Sobald ein Thread erstellt wurde, existiert er im neuen Zustand. Es bedeutet im Wesentlichen, dass der Thread noch mit der Ausführung beginnen muss.
- RUNNING – Wenn ein Thread ausgeführt wird oder ausgeführt werden soll, befindet er sich im Status „Running“.
- WAITING – ein laufender Thread wird manchmal angehalten oder ausgesetzt, damit eine andere Aktivität stattfinden kann. Eine Version von wait() oder join() ohne Timeout kann die Ausführung eines Threads aussetzen. Sobald die Aktion aufgetreten ist, wird ein unterbrochener Thread wieder aufgenommen.
- TIMED-WAITING – ein laufender Thread wird manchmal vorübergehend angehalten oder für eine bestimmte Dauer ausgesetzt. Zum Beispiel, wenn die Funktion sleep() aufgerufen wird.
- BLOCKED – Wenn ein angehaltener Java-Thread eine bestimmte Ressource nicht abrufen kann, wird er blockiert und befindet sich im blockierten Zustand.
- BEENDET – Wenn ein Thread seine Ausführung abgeschlossen hat, befindet er sich im beendeten Zustand. Sie können einen Thread jedoch jederzeit beenden.
Erfahren Sie mehr über Java-Architektur und -Komponenten.

Vorteile der Erstellung eines Threads in Java
Das Erstellen von Threads hat mehrere Vorteile. Einige davon sind
- Da Threads unabhängig sind, wirkt sich eine Ausführung nicht auf eine andere aus, selbst wenn sie auf gemeinsam genutztem Speicherbereich arbeiten. Das bedeutet auch, dass Sie mehr als eine Operation gleichzeitig ausführen können.
- Threading ist eine Form von Multitasking und spart Zeit.
- Ein Fehler in einem Thread wirkt sich nicht auf einen anderen aus.
Wie erstelle ich einen Thread in Java?
Wie oben erläutert, gibt es zwei Möglichkeiten, dies zu tun: Thread-Klasse erweitern oder ausführbare Schnittstelle implementieren
Thread-Klasse
Es gibt Konstruktoren und Methoden in der Thread-Klasse, mit denen Sie Operationen ausführen, Threads verwalten und verfolgen können. Es erweitert die Object-Klasse, die dann die begleitende Runnable-Schnittstelle implementiert. Die in der Threadklasse vorhandenen Konstruktoren sind :Thread(), Thread(String name), Thread(Runnable r) und Thread(Runnable r, String name).
Es folgen die Methoden und ihre Beschreibungen
| Methode | Wofür wird verwendet? |
| Anfang() | Startet die Ausführung |
| Lauf() | Um eine Aktion für einen Thread auszuführen |
| Schlaf() | Versetzt einen Thread für eine bestimmte Dauer in den Ruhezustand |
| beitreten() | Warten Sie, bis ein anderer Thread beendet wird |
| getPriority() | Um die Priorität eines bestimmten Threads anzugeben |
| Priorität setzen() | Um die Priorität eines bestimmten Threads zu ändern |
| getName() | Um den Namen eines angegebenen Threads zurückzugeben |
| Name einsetzen() | Um den Namen des angegebenen Threads zu ändern |
| getId() | Gibt die ID eines bestimmten Threads zurück |
| ist am Leben() | Um zu testen, ob ein Thread in irgendjemandem noch vorhanden ist, heißt es |
| Ertrag() | Hält die Ausführung eines Thread-Objekts an, damit andere Threads ausgeführt werden können |
| aussetzen() | Um einen bestimmten Thread zu unterbrechen |
| fortsetzen() | Fortsetzen eines Threads aus dem angehaltenen Zustand |
| Stop() | Um einen bestimmten Thread zu stoppen |
| zerstören() | Um Thread-Gruppen und Untergruppen zu zerstören |
| unterbrechen() | Um eine Unterbrechung der Thread-Ausführung zu verursachen |
| istunterbrochen() | Testen, ob die Ausführung eines bestimmten Threads unterbrochen wird |
| unterbrochen () | Testen, ob die Ausführung des aktuellen Threads unterbrochen ist |
| activeCount() | Um die Anzahl der aktiven Threads in einer Thread-Gruppe zurückzugeben |
| holdLock() | Es gibt true zurück, wenn und nur wenn der aktuelle Thread die Monitorsperre für das angegebene Objekt hält. |
| getState() | Um den Status eines bestimmten Threads zu bestimmen |
| setContextClassLoader() | So setzen Sie den Kontext ClassLoader |
| getContextClassLoader() | Um den Kontext ClassLoader zurückzugeben |
Um einen Thread durch Erweitern der Klasse Thread zu erstellen, muss zunächst eine Klasse erstellt werden, die die Klasse java.lang.Thread erweitert. Diese Klasse ist so definiert, dass sie die Methode run() überschreibt. Als nächstes wird ein Objekt in der neuen Klasse erstellt, woraufhin die Methode start() aufgerufen wird, um die Ausführung des Threads zu beginnen.

Muss gelesen werden: Pattern-Programme in Java, die Sie auschecken sollten
Lauffähige Schnittstelle
Dies ist der einfachste Weg, einen Thread zu erstellen. Zur Implementierung des Runnable Interface ist nur eine Methode erforderlich: run()
Um es zu erklären, schreiben wir
öffentliche Leere ausführen ()

Innerhalb von run( ) fahren wir fort, den Code zu schreiben, um einen neuen Thread zu erstellen.
Melden Sie sich für Software Engineering-Kurse an den besten Universitäten der Welt an. Verdienen Sie Executive PG-Programme, Advanced Certificate-Programme oder Master-Programme, um Ihre Karriere zu beschleunigen.
Thread-Klasse vs. ausführbare Schnittstelle
Die Thread-Klasse hindert Sie daran, andere Klassen zu erweitern. Dies liegt daran, dass Mehrfachvererbung in Java nicht möglich ist. Dies ist jedoch nicht der Fall, wenn wir das Runnable-Interface implementieren, bei dem Sie andere Klassen weiter erweitern.
Das Erweitern der Thread-Klasse macht Ihnen mehrere wichtige Methoden zugänglich, die die Funktionalität eines Threads verbessern. Zum Beispiel yield(), stop(), isalive(), interrupt(). Die Runnable-Schnittstelle hat nur eine ziemlich einschränkende Methode.
Einpacken
Wenn Sie mehr über Java und die Full-Stack-Softwareentwicklung erfahren möchten, schauen Sie sich das Executive PG-Programm in Full-Stack-Softwareentwicklung von upGrad & IIIT-B an, das für Berufstätige konzipiert ist und mehr als 500 Stunden strenges Training bietet, 9+ Projekte und Aufgaben, IIIT-B-Alumni-Status, praktische praktische Abschlussprojekte und Arbeitsunterstützung bei Top-Unternehmen.

