1. Anwendungsszenarien des Reflexionsmechanismus
(empfohlene verwandte Tutorials: Java-Interviewfragen)
Umgekehrter Code, z. B. Dekompilierung
Ein Framework kombiniert mit Anmerkungen wie Retrofit
Reine Reflexionsmechanismusanwendung Frameworks wie EventBus 2.x
Dynamische Generierung von Klassen-Frameworks wie Gson
2. Was ist Multithreading?
Multithreading bezieht sich auf die Technologie, die die gleichzeitige Ausführung mehrerer Threads von Software oder Hardware realisiert. In einem Programm werden diese unabhängig voneinander ablaufenden Programmfragmente „Threads“ genannt, und das Konzept der Programmierung mit ihnen wird „Multi-Threading“ genannt.
Computer mit Multithreading-Fähigkeiten können aufgrund der Hardwareunterstützung mehr als einen Thread gleichzeitig ausführen und dadurch die Gesamtverarbeitungsleistung verbessern.
Der Hauptthread ist der erste Thread, der im Erstellungsprozess generiert wird. Dies ist der Thread, der der Hauptfunktion entspricht.
(Empfohlenes Lernen: Java-Einführungsprogramm)
3. Erzählen Sie mir etwas über die Vorteile von Multithreading?
1. Vorteile von Multithreading
Die Kosten für die Erstellung eines neuen Threads sind viel geringer als für die Erstellung eines neuen Prozesses
Das Wechseln zwischen Threads erfordert vom Betriebssystem im Vergleich zum Wechseln zwischen Prozessen nur sehr wenig Arbeit
Threads beanspruchen viel weniger Ressourcen als Prozesse
Kann die parallele Anzahl von Multiprozessoren voll ausnutzen
Nachdem das Programm auf das Ende des langsamen E/A-Vorgangs gewartet hat, kann es andere Rechenaufgaben ausführen
Computing (CPU)-intensive Anwendungen: Um auf Multiprozessorsystemen ausgeführt zu werden, wird die Berechnung in mehrere Threads unterteilt, um
IO-intensive Anwendungen zu implementieren Um die Leistung zu verbessern, überlappen sich E/A-Vorgänge und Threads können auf verschiedene E/A-Vorgänge warten.
2. Nachteile von Multithreading
Leistungsverlust (ein rechenintensiver Thread wird selten durch externe Ereignisse blockiert und kann nicht mit anderen kommunizieren Threads teilen sich denselben Prozessor. Wenn die Anzahl der rechenintensiven Threads größer ist als die verfügbaren Prozessoren, kann es zu einem großen Leistungsverlust kommen, der auf den zusätzlichen Synchronisierungs- und Planungsaufwand zurückzuführen ist.)
Reduzierte Robustheit (es besteht ein Mangel an Schutz zwischen Threads. In einem Multithread-Programm aufgrund des geringfügigen Unterschieds in der Zeitzuweisung oder der gemeinsamen Nutzung einiger Die möglichen Auswirkungen negativer Auswirkungen auf Variablen das geteilt werden sollte, ist groß)
Fehlende Zugriffskontrolle (da Prozesse die grundlegende Granularität der Zugriffskontrolle darstellen und bestimmte Betriebssysteme in einem Thread aufrufen. Funktionen wirken sich auf den gesamten Prozess aus)
Der Programmierschwierigkeitsgrad nimmt zu (das Schreiben und Debuggen eines Multithread-Programms ist viel schwieriger als ein Single-Thread-Programm.)
4 . Was ist der Unterschied zwischen Threads und Prozessen?
1. Planung
Ein Prozess ist eine Grundeinheit für das Betriebssystem, um Ressourcen zuzuweisen. Threads sind die Grundeinheit der CPU-Planung.
2. Parallelität
Nach der Einführung von Threads können nicht nur Prozesse gleichzeitig ausgeführt werden, sondern auch mehrere Threads in einem Prozess können gleichzeitig ausgeführt werden, sodass sogar alle Prozesse im Prozess ausgeführt werden können gleichzeitig.
In ähnlicher Weise können Threads in verschiedenen Prozessen auch gleichzeitig ausgeführt werden. Dies ermöglicht dem Betriebssystem eine bessere Parallelität und verbessert die Ressourcennutzung und den Systemdurchsatz.
3. Ressourcen besitzen
Ein Prozess kann Ressourcen besitzen und ist die Grundeinheit für den Besitz von Ressourcen durch das System. Der Thread selbst besitzt keine Systemressourcen, sondern nur einige Ressourcen, die einen unabhängigen Betrieb gewährleisten können. Diese Ressource ist für jeden Thread privat.
Zum Beispiel Thread-ID, eine Reihe von Registern, Stapel, Fehlernummer, Signalmaskenwort (es gibt nur ein ausstehendes Signal in einem Prozess, aber jeder Thread kann dieses Signal verarbeiten), Planungspriorität.
4. Unabhängigkeit
Die Unabhängigkeit von Threads im selben Prozess ist viel geringer als in verschiedenen Prozessen.
5. System-Overhead
Der Overhead der Thread-Umschaltung ist geringer als der Overhead der Prozessumschaltung
Für Herkömmlicher Prozess, dh ein Single-Thread-Prozess, unabhängig von der Anzahl der Prozessoren kann der Prozess nur auf demselben Prozessor ausgeführt werden. Bei einem Multi-Thread-Prozess können jedoch mehrere Threads in einem Prozess mehreren Prozessoren zugewiesen werden. so dass seine gleichzeitige Ausführung den Abschluss des Prozesses beschleunigt.
(Empfohlenes Video-Tutorial:
Java-Video-Tutorial5. Anwendungsszenarien von Prozessen und Threads
Priorisieren Sie Threads, die viel Rechenaufwand erfordern.
Threads werden für starke Korrelationen und Prozesse für schwache Korrelationen verwendet.
Es kann erweitert werden, um Prozesse für die Verteilung auf mehreren Maschinen und Threads für die Verteilung auf mehreren Kernen zu verwenden.
Das obige ist der detaillierte Inhalt vonSammlung klassischer Java-Interviewfragen (4). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!