Multithreading ist in Java ein unvermeidliches und wichtiges Thema. Im Folgenden werden wir das Lernen von Multi-Threading entwickeln. Der folgende Inhalt ist eine Erläuterung von Java-Multi-Thread-Inhalten, bevor "JUC-Pakete in JDK hinzugefügt werden", die Schnittstellen wie Wait (), benachrichtigen () in der Objektklasse;
HINWEIS: Das JUC -Paket bezieht sich auf das Paket von Java.util.Concurrent, das von Java Master Doug Lea durchgeführt wird und zu Java in der JDK 1.5 -Version hinzugefügt wird.
Verstehen Sie vor dem Abschluss der folgenden Kapitel zunächst einige verwandte Konzepte des Multithreading.
Thread -Statusdiagramm
veranschaulichen:
Themen enthalten die folgenden 5 Zustände.
1. New State: Nachdem das Thread -Objekt erstellt wurde, tritt er in den neuen Zustand ein. Zum Beispiel thread Thread = neuer Thread ().
2. Runnable: Auch als "ausführbarer Zustand" bekannt. Nachdem das Thread -Objekt erstellt wurde, rufen andere Threads die Start () -Methode des Objekts auf, um den Thread zu starten. Zum Beispiel thread.start (). Ein Thread in einem fertigen Zustand kann jederzeit von der CPU ausgeführt werden.
3. Auslaufstatus (ausgeführt): Der Thread erhält CPU -Berechtigungen für die Ausführung. Es ist zu beachten, dass Threads nur den laufenden Status aus dem Ready State eingeben können.
4. Blockierter Zustand: Blockierter Zustand bedeutet, dass der Thread die CPU -Nutzungsrechte aus irgendeinem Grund aufgibt und vorübergehend nicht mehr läuft. Erst wenn der Thread in den bereiten Zustand eingeht, hat er die Chance, in den Laufstatus zu gehen. Es gibt drei Arten von Blockaden:
.
(02) Synchronisierte Blockierung-Ein Thread erfasst das synchronisierte Synchronisationsschloss (da das Schloss von anderen Threads besetzt ist), und tritt in einen synchronisierten Blockierungszustand ein.
(03) Andere Blockierungen-Der Thread wird in einen Blockierungsstatus gelangen, indem Sie Schlaf () oder Join () des Threads anrufen oder eine E/A-Anfrage ausstellen. Wenn der Sleep () -State zeitlich abgestimmt war, Join () darauf wartete, dass der Faden endet oder zeitlich abgestimmt hat oder die E/A-Verarbeitung abgeschlossen wurde, wurde der Thread wieder in den bereiten Zustand eingegeben.
5. Dead State: Der Thread hat die Ausführung der Run () -Methode aufgrund einer Ausnahme beendet oder beendet, und der Thread beendet seinen Lebenszyklus.
Die in diesen 5 Zuständen beteiligten Inhalte umfassen die Objektklasse, den Thread und die synchronisierten Schlüsselwörter. Wir werden diese Inhalte einzeln in den folgenden Kapiteln lernen.
Objektklasse definiert Schlaf-/Weckfunktionen wie Wait (), benachrichtigen (), NotifyAll (), usw.
Die Thread -Klasse definiert einige Spalten -Thread -Betriebsfunktionen. Zum Beispiel die Schlaffunktion von Sleep (), Interrupt () Interrupt -Funktion, getName () Get Thread Name usw.
Synchronisiert ist ein Schlüsselwort; Die Funktion von synchronisiert besteht darin, die Synchronisationsschloss des Objekts zu erfassen.
Wenn wir später Wait (), Notify () und andere Methoden einführen, werden wir analysieren, warum "Wait (), Benachrichtigung () und andere Methoden in der Objektklasse definiert werden sollten, nicht in der Thread -Klasse".