Wir alle wissen, dass es in Java zwei Mittel gibt, um Multi -Threaded zu erreichen, eine, die die Thread -Klasse fortzusetzen, und das andere ist die Implementierung der rannbaren Schnittstelle.
1. Was sind die Unterschiede zwischen Prozessen und Fäden?
Der Prozess ist eine Ausführungsanwendung, und der Thread ist eine Ausführungssequenz innerhalb des Prozesses. Ein Vorgang kann mehrere Threads haben. Der Faden wird auch als leichter Prozess bezeichnet.
2. Wie viele verschiedene Möglichkeiten gibt es, um Threads zu erstellen? Welches magst du? Warum?
Es gibt drei Möglichkeiten, einen Thread zu erstellen:
(1) Erben Sie die Thread -Klasse (2) Implementierung der Runnable -Schnittstelle (3) Anwendungen können das Ausführungsrahmen verwenden, um einen Thread -Pool zu erstellen, um die Runnable -Schnittstelle zu erreichen. In dem Anwendungsdesign, das andere Objekte geerbt hat, erfordert dies mehr Vererbung (und Java unterstützt keine mehr Vererbung) und kann nur Schnittstellen erreichen. Gleichzeitig ist der Fadenpool auch sehr effizient und einfach zu erreichen und zu verwenden.
3. Zusammenfassung Erklärung mehrerer der Verwendung von Threads.
Während des Ausführungsprozesses können Threads im folgenden Zustand sein:
Runnable: Der Thread ist bereit zum Ausführen und kann nicht sofort ausgeführt werden.
Ausführen: Der Prozess führt den Code des Threads aus.
Warten: Faden befinden sich im Zustand der Obstruktion und warten auf eine externe Behandlung.
Schlafen: Faden ist gezwungen, zu schlafen.
E/A -Block (blockiert auf E/A): Warten auf den E/A -Betrieb.
Auf der Synchronisation blockiert: Warten Sie auf das Schloss.
Tod: Der Thread wird ausgeführt.
4. Was ist der Unterschied zwischen der Synchronisationsmethode und dem Synchroncode -Block?
In der Java -Sprache hat jedes Objekt ein Schloss. Der Thread kann das synchronisierte Schlüsselwort verwenden, um die Sperre für das Objekt zu erhalten. Synchronisierte Schlüsselwörter können auf die Methodenebene (grobe Granularsperrung) oder Codeblockebene (feine Partikelgröße) angewendet werden.
5. Wie wird im Monitor (Monitor) eine Threadsynchronisation durchgeführt? Welche Synchronisationsstufe sollte das Programm tun?
Der Monitor und die Schloss werden in der virtuellen Java -Maschine verwendet. Der Monitor überwacht einen synchronen Codeblock, um sicherzustellen, dass nur ein Thread synchroner Codeblöcke gleichzeitig ausführt. Jeder Monitor ist einer Objektreferenz zugeordnet. Der Thread erlaubt den Synchronisierungscode für Ausführungssynchronisation vor dem Erhalt der Sperre nicht.
6. Was ist Deadlock?
Beide Prozesse warten darauf, dass die andere Partei ausgeführt wird, bevor sie weiter ausführen können. Infolgedessen warten beide Prozesse unbegrenzt.
7. Wie kann man sicherstellen, dass N -Threads auf N -Ressourcen zugreifen können und nicht zu toten Schlössern führen?
Bei der Verwendung mehrerer Threads besteht eine sehr einfache Möglichkeit, tote Schlösser zu vermeiden, um die Reihenfolge der Erhalt von Schlössern und erzwungene Gewinde anzugeben, um Sperren in der angegebenen Reihenfolge zu erhalten. Wenn alle Threads in derselben Reihenfolge gesperrt und freigegeben werden, gibt es keine toten Schlösser.