Thread-Status und Blockierung

Ich habe Threads und Prozesse bereits erwähnt, also lassen Sie mich den Status der Threads erwähnen!

Thread-Zustände werden normalerweise in fünf Typen unterteilt:

  • Neu (neuer Status): Erstellen Sie ein Thread-Objekt und der Lebenszyklus des Threads beginnt. Zu diesem Zeitpunkt verfügt der Thread bereits über entsprechenden Speicherplatz und andere Ressourcen

  • Ausführbar (Bereitschaftszustand): Nachdem das Thread-Objekt erstellt wurde, kann der Thread durch Aufrufen der start()-Methode des Threads gestartet werden. Wenn der Thread startet, wechselt er in den Bereitschaftszustand. Da die CPU nicht zugewiesen wurde, wird die Der Thread tritt in die Thread-Warteschlange ein und stellt sich in die Warteschlange (ausführbar im Thread-Pool) und wartet auf den Dienst der CPU. Zu diesem Zeitpunkt verfügt der Thread über die Betriebsbedingungen

  • Läuft (Laufzustand): Wenn der Thread im Bereitschaftszustand aufgerufen wird und CPU-Ressourcen erhält, wechselt der Thread in den Laufzustand. Zu diesem Zeitpunkt wird die run()-Methode des Thread-Objekts automatisch aufgerufen. run() definiert die Operation Logik und Funktionen des Threads, der Zustand wird erst beendet, wenn andere Methoden aufgerufen werden oder eine Blockierung auftritt

  • Blockiert (blockierter Zustand): Der Thread gibt aus irgendeinem Grund das Recht auf, die CPU zu nutzen, unterbricht die Ausführung oder stoppt die Ausführung (wenn er zeitaufwändige Eingabe- und Ausgabevorgänge ausführen muss, gibt er vorübergehend das Recht auf, die CPU zu nutzen Unterbrechen Sie die eigene Ausführung und wechseln Sie in den blockierten Zustand. Wenn der Thread blockiert ist, kann er nicht in die Warteschlange gelangen. Erst wenn die Ursache der Blockierung beseitigt ist, kann der Thread in die Bereitschaftswarteschlange übertragen und in der Warteschlange stehen. Nach der Auswahl Durch die CPU-Planung wird der Thread von der ursprünglichen Stoppposition aus weiter ausgeführt

Hinweis: Kehren Sie in den Bereitschaftszustand zurück, nachdem die Blockierung aufgehoben wurde, nicht in den Betriebszustand

  • Tot (Totzustand): Nachdem der Thread die stop()-Methode, die destroy()-Methode oder die run()-Methode aufgerufen hat, befindet sich der Thread im toten Zustand und der Thread im toten Zustand kann nicht fortfahren läuft

Thread-Laufprozess:

  • Nachdem Sie mit dem neuen Schlüsselwort einen Thread erstellt haben, geben Sie das neue Leben ein
  • Geben Sie den Bereitschaftszustand ein, nachdem Sie die Methode start() aufgerufen haben
  • Nachdem die CPU diesen Thread geplant hat, beginnt der Thread mit der Ausführung und wechselt in den Ausführungsstatus
  • Treffen Sie sich, geben Sie nach, schlafen Sie während des Betriebs und verursachen Sie eine Blockade, wechseln Sie in den blockierten Zustand und kehren Sie in den Bereitschaftszustand zurück, nachdem die Ursache der Blockierung beseitigt wurde
  • Nachdem der Thread normal ausgeführt oder abnormal beendet wurde, wechselt er in den Todeszustand

Methoden, die eine Thread-Blockierung verursachen:

Join, Yield, Sleep, Wait()-Methode des Objekts

Beachten:

Begegnung mit der Join-, Yield-, Sleep- und Wait()-Methode des Objekts, synchronisiert, Rückkehr in den Bereitschaftszustand

Freundliche Tipps:

Sie können den aktuellen Status des Threads über getState() abrufen:

NEU, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATED

Wenn Sie mehr über Threads erfahren möchten, können Sie meinen vorherigen Thread und Prozess lesen

Supongo que te gusta

Origin blog.csdn.net/Ai1114/article/details/125258149
Recomendado
Clasificación