Einführung in Java Multi-Threading Interview Fragen und Antworten

Java boomt derzeit aufgrund seiner unabhängigen Plattform. Es kann überall eingesetzt werden und wird daher in vielen neuen Technologien eingesetzt. Um darauf vorbereitet zu sein, ist Multithreading ein wichtiges Thema, das sich auf Interviews konzentriert. Sie haben also endlich Ihren Traumjob in Java-Multithreading gefunden, fragen sich aber, wie Sie das Interview knacken und was das wahrscheinliche Java-Multithreading sein könnte Interview Fragen. Jedes Interview ist anders und der Umfang eines Jobs ist auch anders. Lassen Sie uns ein paar wichtige Java-Multithreading-Interview-Fragen durchgehen, die in den Java-Multithreading-Interviews gestellt werden, die Sie verfolgen würden.

Im Folgenden finden Sie die wichtigsten Fragen und Antworten zu Java-Multithreading-Interviews

1.Was ist Thread in JAVA und wie implementieren Sie es?

Antworten:
Ein Thread erleichtert das Multitasking und die Multiverarbeitung in einem Programm. Es nutzt die CPU effektiv und hilft, die Leistung der Anwendung zu verbessern. Mit Java kann der Benutzer mehrere Threads gleichzeitig verwenden. Es kann ohne Unterbrechung parallel mit anderen Programmen ausgeführt werden. Dies hilft bei der Verkürzung der Zeit für den Prozess. Wenn zum Beispiel die Ausführung eines Programms 60 Sekunden dauert, können wir 6 Threads verwenden, die das Ergebnis in 10 Sekunden liefern.

Java bietet zwei Möglichkeiten, um einen Thread in einem Programm zu implementieren. Die Schnittstelle java.lang.Runnable verfügt über eine Instanz java.lang.A Thread, für dessen Ausführung eine Task über eine Instanz erforderlich ist. Die Thread-Klasse implementiert bereits Runnable, sodass ein Benutzer die run () -Methode direkt überschreiben kann, indem er die Thread-Klasse erweitert oder die Runnable-Schnittstelle implementiert.

2. Wann wird Runnable verwendet und wann wird Thread in Java verwendet?

Antworten:
Java unterstützt nicht mehrere Vererbungen einer Klasse, ermöglicht jedoch die gleichzeitige Implementierung mehrerer Schnittstellen. Daher ist es besser, Runnable zu implementieren, als die Thread-Klasse zu erweitern.

3. Wie unterscheidet man einen Thread von einem Prozess?

Antworten:
Ein Thread ist eine Teilmenge eines Prozesses. Für einen Prozess können mehrere Threads ausgeführt werden. Threads können einen beliebigen Teil eines Prozesses ausführen. Ein Prozess hat seine eigene Adresse, an der er gespeichert ist, während der Thread die Adresse des Prozesses teilt, der ihn erstellt hat. Das Erstellen eines Prozesses ist ein hektischer Prozess, während Threads einfach erstellt werden können. Ein Thread wird normalerweise als Lightweight-Prozess bezeichnet. Die Kommunikation zwischen Prozessen ist schwierig, während Threads mit den Java-Methoden wait () und notify () problemlos kommunizieren können. Prozesse sind unabhängig, daher wirken sich Änderungen an Prozessen nicht auf untergeordnete Prozesse aus. Im Gegenteil, wenn Änderungen an einem Thread vorgenommen werden, besteht die Möglichkeit, dass andere Threads betroffen sind.

4. Warum wird gesagt, dass das Thread-Verhalten nicht vorhersehbar ist?

Antworten:
Der Grund dafür ist der Thread-Scheduler, der die Ausführung von Threads übernimmt. Der Scheduler hat möglicherweise eine unterschiedliche Leistung auf verschiedenen Plattformen: Windows, UNIX, LINUX usw. Während der Ausführung desselben Threads werden möglicherweise unterschiedliche Ausgaben auf verschiedenen Plattformen und manchmal sogar auf derselben Plattform ausgegeben. Um dies zu lösen, kann ein Benutzer dasselbe ausführbare Objekt erstellen, run () - Schleifen in beiden Threads erstellen und beide Threads zusammen starten. Im Idealfall sollte der Scheduler beide Threads zusammen auswählen und die Leistung nicht beeinträchtigen, aber beide Threads treten anonym in Schleifen ein.

5. Was ist eine flüchtige Variable in Java und welche Bedeutung hat sie?

Antworten:
Java erleichtert dem Benutzer das Teilen von Variablen, die in verschiedenen Threads vorhanden sind. Eine flüchtige Variable fungiert als spezieller Modifikator, der nur für Instanzvariablen verwendet werden kann. Da diese Variable gemeinsam genutzt wird, gibt es konsistente Änderungen. Der Thread muss sicherstellen, dass er exklusiven Zugriff auf diese Variablen hat und eine Sperre zum gegenseitigen Ausschluss freigegebener Variablen erzwungen wird. Es stellt sicher, dass ein Schreibvorgang vor einem nachfolgenden Lesevorgang ausgeführt wird. Das Java-Speichermodell stellt die Konsistenz dieser Variablen sicher. Flüchtige Methoden können nicht vorhanden sein, da sie nur in Form von Variablen verwendet werden können.

6. Wozu dient das synchronisierte Schlüsselwort? Was ist der Unterschied zwischen synchronisierten und flüchtigen Keywords?

Antworten:
Das synchronisierte Schlüsselwort wird verwendet, wenn der Zweck darin besteht, jeweils nur einen Thread in einem geeigneten Codeabschnitt auszuführen. Es kann verwendet werden, um vier Arten von verschiedenen Blöcken wie folgt anzuzeigen:

1) Instanzmethoden
2) Statische Methoden
3) Codeblöcke in Instanzmethoden
4) Codeblöcke in statischen Methoden

Es kann deklariert werden als:

Public synchronized void example () ()

Der Unterschied zwischen flüchtigem und synchronisiertem Schlüsselwort besteht darin, dass synchronisiert mit Variablen und Methoden verwendet werden kann, während flüchtiges Schlüsselwort nicht mit Methoden verwendet werden kann. Flüchtige Variablen werden nicht im Cache-Speicher gespeichert, synchronisierte Variablen werden im Cache-Speicher gespeichert. Eine flüchtige Variable landet niemals in einem Deadlock, da keine Sperre erforderlich ist. Wenn sie in synchronisierten Variablen nicht ordnungsgemäß ausgeführt werden, kann dies zu einem Deadlock führen.

7. Warum sind Methoden wie wait (), notify () und notify all () in der Objektklasse und nicht in der Threadklasse vorhanden?

Antworten:
Die Objektklasse verfügt über Monitore, mit denen der Thread ein Objekt sperren kann, während Thread keine Monitore hat. Wenn eine der oben genannten Methoden aufgerufen wird, wartet sie darauf, dass ein anderer Thread das Objekt freigibt, und benachrichtigt den Monitor, indem sie notify () oder notify all () aufruft. Wenn die Methode notify () aufgerufen wird, werden alle Threads benachrichtigt, die auf die Freigabe des Objekts warten. Der Monitor der Objektklasse prüft, ob das Objekt verfügbar ist oder nicht. Thread-Klassen mit diesen Methoden würden nicht helfen, da auf einem Objekt mehrere Threads existieren und nicht umgekehrt.

8. Erklären Sie den Unterschied zwischen den Methoden sleep () und wait ().

Antworten:
1) Die Methode sleep () wird für Threads und nicht für Objekte aufgerufen. Wait () -Methode wird für Objekte aufgerufen.
2) Wenn die wait () -Methode aufgerufen wird, verschiebt der Monitor den Thread vom laufenden in den Wartezustand. Sobald ein Thread in Wartestellung ist (), kann er nur dann auf ausführbar umgestellt werden, wenn er für dieses Objekt notify () oder notifyall () hat. Der Scheduler ändert danach den Zustand. Während der Methode sleep () wird der Status auf wait geändert und erst nach Ablauf der Ruhezeit wieder auf runable zurückgesetzt.
3) Die Wait () - Methode ist Teil der java.lang.Object-Klasse, während sleep () Teil der java.lang.Thread-Klasse ist.
4) Wait () wird immer mit einem synchronisierten Block verwendet, da es erforderlich ist, ein Objekt zu sperren, während sleep () von außerhalb des synchronisierten Blocks verwendet werden kann.

9. Wie erzwinge ich das Starten eines Threads in Java?

Antworten:
In Java kann durch Multithreading kein Thread gestartet werden. Nur der Thread-Scheduler kann Threads steuern und sie sind keiner API zur Steuerung ausgesetzt.

10. Verlässt der Thread die Objektsperre, wenn die Methoden wait () und sleep () aufgerufen werden?

Antworten:
Wenn sich ein Thread in der Methode sleep () befindet, verlässt er die Sperre nicht und wechselt in den Wartezustand. Der Thread wartet, bis die Ruhezeit vorbei ist. Wenn die Methode wait () verwendet wird, verlässt der Thread die Objektsperre und wechselt in den Wartezustand. Sobald notify () aufgerufen wird, geht es wieder in den laufenden Zustand und erwirbt die Sperre.

Empfohlener Artikel

Dies war ein Leitfaden für die Liste der Fragen und Antworten zu Java-Multithreading-Vorstellungsgesprächen, damit der Kandidat diese Fragen zu Java-Multithreading-Vorstellungsgesprächen auf einfache Weise durchgreifen kann. Sie können sich auch die folgenden Artikel ansehen, um mehr zu erfahren -

  1. Fragen im Vorstellungsgespräch für Java Developer - So knacken Sie die Top 7-Fragen
  2. Umfassender Leitfaden zur Java-App-Entwicklung (Awesome Theory)
  3. Fragen und Antworten im Vorstellungsgespräch bei Maven | Top und am meisten gefragt
  4. 10 Advanced AngularJS Interview Fragen für erfahrene