Heim  >  Artikel  >  Java  >  Sammlung klassischer Java-Interviewfragen (4)

Sammlung klassischer Java-Interviewfragen (4)

王林
王林nach vorne
2020-07-09 16:28:212268Durchsuche

Sammlung klassischer Java-Interviewfragen (4)

1. Anwendungsszenarien des Reflexionsmechanismus

(empfohlene verwandte Tutorials: Java-Interviewfragen)

  1. Umgekehrter Code, z. B. Dekompilierung

  2. Ein Framework kombiniert mit Anmerkungen wie Retrofit

  3. Reine Reflexionsmechanismusanwendung Frameworks wie EventBus 2.x

  4. 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.

Sammlung klassischer Java-Interviewfragen (4)

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-Tutorial

)

5. Anwendungsszenarien von Prozessen und Threads

Sammlung klassischer Java-Interviewfragen (4)

    Es müssen häufig Prioritätsthreads erstellt und gelöscht werden.
  • 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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen