Hauptunterschied - Schlaf gegen Warten in Java
Sleep and Wait sind zwei Methoden für Multithreading in Java. Die Sleep-Methode gehört zur Thread-Klasse, während die Wait-Methode zur Object-Klasse gehört. Der Hauptunterschied zwischen Ruhezustand und Wartezeit in Java besteht darin, dass der Ruhezustand verwendet wird, um die Ausführung des aktuellen Threads für die angegebene Anzahl von Millisekunden anzuhalten, während die Wartemethode verwendet wird, um den aktuellen Thread zu warten, bis ein anderer Thread die Benachrichtigung oder aufruft notifyAll-Methode für das Objekt.
Ein Thread ist die kleinste Verarbeitungseinheit im Betriebssystem. Es ist ein einzelner sequentieller Steuerungsfluss innerhalb eines Programms. Fäden sind leicht. Multithreading ist der Mechanismus zum gleichzeitigen Ausführen mehrerer Threads. Programmiersprachen wie Java unterstützen Multithreading. Multithreading hat Vorteile, da mehrere Threads gleichzeitig ausgeführt werden können und die Threads unabhängig voneinander sind. In Java gibt es Methoden, die für Multithreading verwendet werden können. Zwei von ihnen schlafen und warten.
INHALT
1. Übersicht und Hauptunterschied
2. Was ist Schlaf in Java
? 3. Was ist Wartezeit in Java?
4. Ähnlichkeiten zwischen Schlaf und Wartezeit in Java.
5. Vergleich nebeneinander - Schlaf und Wartezeit in Java in Tabellenform.
6. Zusammenfassung
Was ist Schlaf in Java?
In einem Betriebssystem werden mehrere Prozesse ausgeführt. Ein Prozess ist ein Programm in Ausführung. Jeder Prozess kann mehrere Threads haben, und zwischen diesen Threads findet eine Kontextumschaltung statt. In Java gibt es zwei Möglichkeiten, einen Thread zu erstellen. Dies geschieht durch Erweitern der Thread-Klasse oder durch Implementieren der Runnable-Schnittstelle. Die Thread-Klasse verfügt über Konstruktoren und Methoden zum Erstellen und Ausführen von Operationen für einen Thread. Die Thread-Klasse erweitert die Object-Klasse und implementiert die Runnable-Schnittstelle. Die Runnable-Schnittstelle sollte von jeder Klasse implementiert werden, deren Instanzen von einem Thread ausgeführt werden sollen. Wenn der Thread ausgeführt wird, wird der Code, der ausgeführt werden soll, in die Ausführungsmethode geschrieben. Der Thread, der ausgeführt werden soll, wird vom Thread-Scheduler ausgewählt. In einem Prozess wird nur ein Thread ausgeführt.
Ein Thread durchläuft mehrere Phasen. Nach dem Erstellen eines Objekts der Thread-Klasse kann der Programmierer die Startmethode aufrufen. Vor dem Aufrufen dieser Methode befindet sich der Thread im neuen Status. Der Thread-Scheduler wählt einen Thread aus, der ausgeführt werden soll. Wenn der Thread noch nicht vom Thread-Scheduler ausgewählt wurde, aber die Startmethode aufgerufen wird, befindet sich der Thread in einem ausführbaren Zustand. Nachdem der Thread-Scheduler den auszuführenden Thread ausgewählt hat, wechselt er in den laufenden Zustand. Wenn der Thread aktiv ist, aber derzeit nicht ausgeführt werden kann, befindet er sich in einem nicht ausführbaren oder blockierten Zustand. Nach Abschluss der Ausführungsmethode wechselt der Thread in den Status "Beendet". Dies sind die Hauptphasen des Thread-Lebenszyklus.
In der Thread-Klasse stehen verschiedene Methoden zur Verfügung, um verschiedene Aufgaben auszuführen. Die Schlafmethode wird verwendet, um die Methode für einen bestimmten Zeitraum zu schlafen. Die Syntax für die Sleep-Methode lautet public void sleep (lange Millisekunden) und löst InterruptedException aus. Dadurch stoppt der aktuell ausgeführte Thread die Ausführung vorübergehend für eine bestimmte Anzahl von Millisekunden. Wenn ein anderer Thread den aktuellen Thread unterbricht, wird der unterbrochene Status des aktuellen Threads gelöscht, wenn diese Ausnahme ausgelöst wird.
Abbildung 01: Java-Programm mit Schlafmethode
Gemäß dem obigen Programm enthält die Ausführungsmethode Code, der ausgeführt werden sollte. Im Hauptprogramm werden zwei Objekte des ExampleThread1 erstellt und die Startmethoden darauf aufgerufen. Dadurch kann der Code innerhalb der Ausführungsmethode ausgeführt werden. Es wird jeweils nur ein Thread ausgeführt. Mit dem Thread. Schlaf (1000); ermöglicht dem ersten Thread, die Ausführung für 1000 Millisekunden zu beenden. Wenn ein Thread schläft, nimmt der Thread-Scheduler den anderen Thread auf.
Was ist Warten in Java?
Mehrere Threads greifen möglicherweise auf eine gemeinsam genutzte Ressource zu. Dies kann zu einer falschen Ausgabe führen. Die Thread-Synchronisation kann verwendet werden, um nur einen Thread für den Zugriff auf die gemeinsam genutzte Ressource zu erstellen. Nehmen Sie eine Situation wie folgt an. Wenn zwei Threads als t1 und t2 vorhanden sind, beginnt t1 mit dem Speichern von Werten in einer Textdatei mit dem Namen Text1.txt. Diese Werte werden für eine andere Berechnung verwendet, wenn t1 zurückkehrt. Wenn t2 startet, bevor t1 zurückkehrt, kann t2 die von t1 gespeicherten Werte ändern. Dies kann dazu führen, dass t1 eine falsche Ausgabe liefert. Mit Hilfe der Synchronisation kann diese Datei gesperrt werden, wenn t1 die Datei Text1.txt verwendet, sodass nur t1 darauf zugreifen kann. Der t2 kann es nicht ändern, bis t1 die Sperre für den Zugriff auf diese Textdatei aufhebt. Wenn die Aufgabe abgeschlossen ist, kann der t1 die Sperre aufheben. Das Schloss wird auch als Monitor bezeichnet.
Die Thread-Synchronisation kann durch Kommunikation zwischen Threads erreicht werden. Ein kritischer Abschnitt ist ein Codesegment, das auf die gemeinsam genutzten Ressourcen zugreift. Bei der Kommunikation zwischen Threads wird ein Thread angehalten, der in seinem kritischen Abschnitt ausgeführt wird, und ein anderer Thread darf in denselben kritischen Abschnitt eintreten, der ausgeführt werden soll. Es wird mit den Methoden wait, notify und notifyAll implementiert. Sie gehören zur Object-Klasse. Die Wartemethode wird verwendet, damit der aktuelle Thread die Sperre aufheben und warten kann, bis ein anderer Thread die Methode notify oder notifyAll für das Objekt aufruft. Die Benachrichtigungsmethode wird verwendet, um einen einzelnen Thread zu aktivieren, der auf die Sperre wartet. NotifyAll aktiviert alle Threads, die auf die Sperre warten.
Abbildung 02: Rechnerklasse
Abbildung 03: Hauptmethode
Die Calculator-Klasse erweitert den Thread. Der synchronisierte Block befindet sich innerhalb der Ausführungsmethode. Die Methode for loop und notify befindet sich im synchronisierten Block. Innerhalb der Hauptmethode wird eine Instanz eines erstellten Threads und die Startmethode für diese Instanz aufgerufen. Die Hauptmethode wartet, bis der Thread eine Benachrichtigung gibt. Bei der Ausführung des Programms wartet die Hauptmethode bis zur vollständigen Ausführung der Ausführungsmethode und wartet auf die Benachrichtigungsmethode. Sobald die Benachrichtigungsmethode aufgerufen wird, wartet die Hauptmethode nicht mehr und beginnt mit der Ausführung des restlichen Codes. Main wartet, bis der Rechner-Thread abgeschlossen ist. Schließlich wird das Ergebnis der Summe gedruckt.
Wenn es keinen synchronisierten Block gibt und die Hauptmethode einen Code wie unten hat, wird die Ausgabe als Null ausgegeben, da nicht darauf gewartet wird, dass der andere Thread abgeschlossen wird.
Rechner t1 = neuer Rechner ();
t1. Start ();
System.out.println (t1.sum);
Was ist die Ähnlichkeit zwischen Schlaf und Warten in Java?
Sowohl Sleep als auch Wait sind Methoden, die bei der Implementierung von Multithreading in Java verwendet werden können
Was ist der Unterschied zwischen Schlaf und Warten in Java?
Diff Artikel Mitte vor Tabelle
Schlaf gegen Warten in Java |
|
Die Sleep-Methode bewirkt, dass der aktuelle Thread die Ausführung für die angegebene Anzahl von Millisekunden anhält, abhängig von der Genauigkeit und Genauigkeit der Systemzeitgeber und -planer. | Die wait-Methode bewirkt, dass der aktuelle Thread wartet, bis ein anderer Thread die notify- oder notifyAll-Methode für das Objekt aufruft. |
Assoziation mit Lock | |
Die Sleep-Methode hebt die Sperre für ein Objekt während der Synchronisierung nicht auf. | Die Wartemethode gibt die Sperre während der Synchronisation frei. |
Ausführungsmethode | |
Die Sleep-Methode wird für den aktuellen Thread ausgeführt. | Die Wartemethode wird für das Objekt aufgerufen. |
Assoziierte Klasse | |
Der Schlaf ist eine Methode der Thread-Klasse. | Das Warten ist eine Methode der Objektklasse. |
Fertigstellung | |
Der Schlafvorgang ist abgeschlossen, nachdem die angegebene Zeit abgelaufen ist. | Die Wartemethode wird durch Aufrufen der Methoden notify oder notifyAll unterbrochen. |
Zusammenfassung - Schlaf gegen Warten in Java
Auf dem Betriebssystem werden mehrere Prozesse ausgeführt. Jeder Prozess kann mehrere Threads haben. Ein Thread ist die kleinste Verarbeitungseinheit in einem Betriebssystem. Die Programmiersprache Java unterstützt Multithreading. Es ermöglicht das gleichzeitige Ausführen mehrerer Threads. Sleep und Wait sind zwei Methoden, die bei der Implementierung von Multithreading verwendet werden können. Der Unterschied zwischen Sleep und Wait in Java besteht darin, dass der Sleep verwendet wird, um die Ausführung des aktuellen Threads für die angegebene Anzahl von Millisekunden anzuhalten, während die Wait-Methode verwendet wird, um den aktuellen Thread zu warten, bis ein anderer Thread notify oder notifyAll aufruft Methode für das Objekt.