Heim  >  Artikel  >  Java  >  Fragen zum neuen Java-Interview 2020 – Multithreading (1)

Fragen zum neuen Java-Interview 2020 – Multithreading (1)

王林
王林nach vorne
2020-04-25 17:54:422117Durchsuche

Fragen zum neuen Java-Interview 2020 – Multithreading (1)

1. Was ist der Unterschied zwischen Parallelität und Parallelität?

Parallel bezieht sich auf zwei oder mehr Ereignisse, die gleichzeitig auftreten; Parallelität bezieht sich auf zwei oder mehr Ereignisse, die im gleichen Zeitintervall auftreten.

Parallelität bedeutet mehrere Ereignisse auf verschiedenen Entitäten, und Parallelität bedeutet mehrere Ereignisse auf derselben Entität.

Parallelität ist die „gleichzeitige“ Verarbeitung mehrerer Aufgaben auf einem Prozessor, und Parallelität ist die gleichzeitige Verarbeitung mehrerer Aufgaben auf mehreren Prozessoren. Zum Beispiel ein verteilter Hadoop-Cluster.

Das Ziel der gleichzeitigen Programmierung besteht also darin, jeden Kern des Prozessors voll auszunutzen, um die höchste Verarbeitungsleistung zu erzielen.

(Empfohlene verwandte Video-Tutorials: Java-Video )

2. Was ist der Unterschied zwischen Threads und Prozessen?

Kurz gesagt ist ein Prozess die Grundeinheit der Programmausführung und Ressourcenzuweisung. Ein Programm hat mindestens einen Prozess und ein Prozess hat mindestens einen Thread. Der Prozess verfügt während der Ausführung über eine unabhängige Speichereinheit, und mehrere Threads teilen sich Speicherressourcen, wodurch die Anzahl der Umschaltzeiten reduziert und die Effizienz gesteigert wird. Ein Thread ist eine Entität eines Prozesses, die Grundeinheit der CPU-Planung und -Verteilung und eine Grundeinheit, die kleiner als ein Programm ist und unabhängig ausgeführt werden kann. Mehrere Threads im selben Prozess können gleichzeitig ausgeführt werden.

3. Was ist der Daemon-Thread?

Ein Daemon-Thread ist ein Service-Thread. Genauer gesagt bedient er andere Threads.

4. Welche Möglichkeiten gibt es, einen Thread zu erstellen?

(1) Erben Sie die Thread-Klasse, um eine Thread-Klasse zu erstellen.

Definieren Sie eine Unterklasse der Thread-Klasse und überschreiben Sie die Ausführungsmethode der Klasse. Der Methodenkörper der Ausführungsmethode stellt dar, was die Der Thread möchte die Aufgabe abschließen. Daher wird die run()-Methode als Ausführungskörper bezeichnet.

Erstellen Sie eine Instanz der Thread-Unterklasse, dh erstellen Sie ein Thread-Objekt.

Rufen Sie die start()-Methode des Thread-Objekts auf, um den Thread zu starten.

(Empfohlenes Tutorial: Java Getting Started Program )

(2) Erstellen Sie eine Thread-Klasse über die Runnable-Schnittstelle

Definieren Sie die Implementierungsklasse des ausführbare Schnittstelle und schreiben Sie die run()-Methode dieser Schnittstelle neu. Der Methodenkörper der run()-Methode ist auch der Thread-Ausführungskörper des Threads.

Erstellen Sie eine Instanz der Runnable-Implementierungsklasse und verwenden Sie diese Instanz als Ziel von Thread, um ein Thread-Objekt zu erstellen. Dieses Thread-Objekt ist das eigentliche Thread-Objekt.

Rufen Sie die start()-Methode des Thread-Objekts auf, um den Thread zu starten.

(3) Erstellen Sie einen Thread über Callable und Future

Erstellen Sie eine Implementierungsklasse der Callable-Schnittstelle und implementieren Sie die call()-Methode, die als Thread-Ausführungskörper dient und eine Rückgabe hat Wert .

Erstellen Sie eine Instanz der Callable-Implementierungsklasse und verwenden Sie die FutureTask-Klasse, um das Callable-Objekt zu umschließen. Das FutureTask-Objekt kapselt den Rückgabewert der call()-Methode des Callable-Objekts.

Verwenden Sie das FutureTask-Objekt als Ziel des Thread-Objekts, um einen neuen Thread zu erstellen und zu starten.

Rufen Sie die get()-Methode des FutureTask-Objekts auf, um den Rückgabewert zu erhalten, nachdem die Ausführung des Sub-Threads beendet ist.

5. Was ist der Unterschied zwischen runnable und callable?

Dies ist eine ziemlich tiefgründige Frage, und sie zeigt auch, wie breit gefächert das Wissen ist, das ein Java-Programmierer erwerben kann.

Der Rückgabewert der run()-Methode in der Runnable-Schnittstelle ist ungültig und führt lediglich den Code in der run()-Methode aus.

Der Aufruf( in der Die Methode Callable interface hat einen Rückgabewert und ist ein generischer Typ. Sie kann verwendet werden, um die Ergebnisse der asynchronen Ausführung in Verbindung mit Future und FutureTask zu erhalten.

Wenn Sie weitere Fragen zu Java-Interviews erfahren möchten, achten Sie bitte auf die Spalte Erweiterte Java-Interviewfragen.

Das obige ist der detaillierte Inhalt vonFragen zum neuen Java-Interview 2020 – Multithreading (1). 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