Erlernen Sie die Grundlagen von Java (Siebzehn): Zusammenfassung zum Multithreading
1. Prozess
1. Strg+Umschalt+Esc Task-Manager-Fenster 2. Programme werden in der Betriebssystemumgebung ausgeführt und benötigen CPU- und Speicherressourcen. Vom Start des Programms bis zum Schließen des Programms wird dieser Prozess als Prozess bezeichnet ist im Betriebssystem Einzigartiges Konzept, Prozess = laufendes Programm 4. Ein laufendes Programm entspricht mindestens einem Prozess 5. Einige Programme übernehmen ein Multiprozess-Architekturdesign 7. Prozesse sind unabhängig voneinander und können nicht aufeinander zugreifen oder sich teilen Ressourcen
2. Thread
1. Die Produktionslinie in der Fabrik wird Thread 3 genannt. Der Prozess enthält Threads und Threads sind kleinere und unabhängige Ausführungseinheiten 4. Ein Prozess kann einen Thread (Single-Threaded) oder mehrere Threads (Multi-Threaded) enthalten 5. QQ ist ein Programm (Prozess) und jedes geöffnete Chat-Fenster ist ein Thread 6. Bevor wir das tun Die geschriebenen Programme sind alle Single-Threaded, und die JVM behandelt die Hauptmethode automatisch als Thread (Produktionslinie) für die Ausführung. 7. Threads können nicht unabhängig voneinander ausgeführt werden und können nicht getrennt vom Prozess ausgeführt werden. Mehrere Threads können die Ressourcen des Prozesses gemeinsam nutzen 8. Zwischen Threads ist es unabhängig
3. Multithread-Programmierung
1. Die Programme, die wir zuvor geschrieben haben, waren alle Single-Threaded und die JVM behandelt die Hauptmethode automatisch als Thread (Produktionslinie), um 2 auszuführen. Es gibt zwei Funktionen A/B in einem Programm. Wenn Multi-Thread-Programmierung verwendet wird, kann Funktion A in einem Thread (Produktionslinie) ausgeführt werden Funktion B kann in einem Thread (Produktionslinie) ausgeführt werden. 3. Laden Sie Bilder einzeln hoch. B. Laden Sie mehrere Bilder gleichzeitig hoch. Durch Multithreading werden die Ressourcen von CPU und Speicher weiter genutzt, wodurch die Ausführungseffizienz verbessert wird des Programms 5. Factory Thunder
4. CPU und Multithreading
1. Kann ein Schüler gleichzeitig schreiben und Filme ansehen? Das Gehirn wechselt zwischen Schreiben und Ansehen von Filmen. 2. Filmfilme sind sehr schnell und das Gehirn erzeugt Illusionen. 3. Echte „Gleichzeitigkeit“ gibt es nicht. Die CPU ist extrem schnell, wechselt sich ab und wechselt zufällig zwischen mehreren Threads
5. Java unterstützt Multithreading
1 Es gibt zwei Arten von Threads in Java: User Thread (Benutzer-Thread) und Daemon Thread (Daemon-Thread) bzw Hintergrunddienst-Thread). Die Rolle des Daemon-Threads besteht darin, Dienste für die Ausführung anderer Threads bereitzustellen, beispielsweise GC-Threads. 2. Methode 1: Erben Sie die Thread-Klasse. Methode 2: Implementieren Sie die Runnable-Schnittstelle
6. Methode 1
1. Die Klassen, die wir zuvor definiert haben, sind alle Gewöhnliche KlassenDa die Codes in diesen Klassen nicht gleichzeitig ausgeführt werden können, handelt es sich bei diesen Klassen nicht um Produktionslinienklassen. 2. Java stellt speziell eine Produktionslinienklasse bereit: java.lang.Thread-Klasse, der Code in dieser Klasse kann ausgeführt werden Gleichzeitig 3. Schritte: Lassen Sie uns die benutzerdefinierte Klasse die Thread-Klasse erben, und die von uns definierte Klasse wird zur Produktionslinienklasse. Schreiben Sie die Ausführungsmethode in der benutzerdefinierten Klasse neu und fügen Sie den Code ein, der gleichzeitig ausgeführt werden muss in die run-Methode. Erstellen Sie in der Hauptmethode zuerst die Produktionslinie und starten Sie dann die Produktionslinie start()
7. Thread-Klasse
public long getId(), um die Thread-Nummer (Thread-ID) abzurufen, die beim Erstellen des Threads verwendet wird. Thread-IDs sind eindeutig und bleiben ein Leben lang unverändert. public final void setName(String name), benennen Sie den Thread. Wenn Sie ihn nicht benennen, gibt es ein Standardformat: Thread-0, Thread-1... public final String getName(), get Der Name des Threads ist public void start() , wodurch der Thread mit der Ausführung beginnt und die JVM automatisch die run()-Methode des Threads aufruft. public static void sleep(long millis), lassen Sie den Thread für wie viele Millisekunden schlafen (pausieren). public static Thread currentThread(), erhalten Sie einen Verweis auf das aktuell ausgeführte Thread-Objekt. (Methode 2 wird verwendet)
8. Multithread-Ausführungsprozess
1 Der Code wird in einem Thread ausgeführt, der als Haupt-Thread 2 bezeichnet wird. Darüber hinaus kann der manuell erstellte Thread als untergeordneter Thread 3 bezeichnet werden. Das Programm muss warten, bis die Ausführung aller Threads abgeschlossen ist, bevor es beendet wird
9. Methode 2
Nachteile: Nach dem Erben der Thread-Klasse können keine anderen Klassen geerbt werden. 2. Schritte: a. Wir passen die Klasse an, die die java.lang.Runnable-Schnittstelle implementiert. b Fügen Sie den Code, der gleichzeitig ausgeführt werden muss, in die Ausführungsmethode c ein. Erstellen Sie eine Produktionslinie (Thread) in 3. Methode 2 nicht die Nachteile von Methode 1, ist aber komplizierter als Methode 1
10. Thread-Sicherheitsprobleme,
1. Unter welchen Umständen wird es Thread-Sicherheit geben? Probleme? a. Mehrere Threads sind unabhängig voneinander. b. Mehrere Threads betreiben oder nutzen gemeinsam genutzte Ressourcen. 2. Mehrere Threads betreiben dieselbe gemeinsam genutzte Ressource, aber die Threads sind unabhängig voneinander und haben keinen Kontakt miteinander. Es wird also Situationen geben wobei die Daten nicht synchron aktualisiert werden, was ein Thread-Sicherheitsproblem darstellt. 3. Fall des Bahnfahrkartenverkaufs. Gleichzeitig auszuführender Code: 10 Bahnfahrkarten verkaufen. Gemeinsame Ressourcen: 10 Bahnfahrkarten. Existieren im Allgemeinen als Attribute
11. So lösen Sie Thread-Sicherheitsprobleme
1. Idee: Betreten Sie die Toiletten im Zug nacheinander ... 2. Synchronisationssperre, der Fachbegriff lautet Überwachungsmonitor3 . Java baut automatisch einen Monitor in jedes Objekt ein. 4. Es gibt zwei Möglichkeiten, dies zu implementieren: Synchronisierungscodeblock Synchronisierungsmethode
12. Synchronisierungscodeblock
1. Analysieren Sie zunächst, welcher Code gesperrt werden muss. 2. Die zwischen mehreren Threads verwendete Sperre muss dieselbe Sperre sein
13 Methode
1. Fügen Sie zuerst den Code ein, der gesperrt werden muss, in eine Methode. 2. Verwandeln Sie die Methode in eine Synchronisierungsmethode. public synchronisiert void sale(){ Operation Der Code, der Daten teilt, ist der Code, der muss synchronisiert werden;} 3. Die Sperre der Synchronisierungsmethode ist standardmäßig festgelegt
Die Vor- und Nachteile der Synchronisierungssperre
Vorteile der Synchronisierung: Das Aufkommen der Synchronisierung löst das Sicherheitsproblem des Multithreadings. Nachteile der Synchronisierung: Wenn es viele Threads gibt, ist dies sehr ressourcenintensiv und praktisch nicht möglich, da jeder Thread die Sperre bei der Synchronisierung beurteilt die Effizienz des Programms verringern. (Leistung und Thread-Sicherheit können nicht gleichzeitig erreicht werden)
15. Detaillierte Probleme
1. Können statische Methoden in synchronisierte Methoden geändert werden? Ja, aber die Sperre ist nicht dies. Die Bytecode-Datei der geladenen Klasse ist, dass gemeinsame Ressourcen vorhanden sein müssen und dass mehrere Threads dieselbe Sperre verwenden müssen 🎜>