Java Interview-Fragen: #5 Multithreading
5. Mai 2025 - Lesezeit: 3 Minuten
: Java Grundlagen, Objektorientierte Programmierung (OOP), Datenstrukturen und Algorithmen, Exception Handling und Multithreading und ich werde auf die wichtigsten Fragen zu diesen Themen eingehen, die Antworten und falls nötig auch weitere Informationen dazu geben.
Im heutigen Beitrag geht es nun um Fragen zum Multithreading.
#1 Was ist ein Thread und was sind die verschiedenen Phasen seines Lebenszyklus? |
Ein Thread ist ein leichtgewichtiger Prozess, der gleichzeitig mit anderen Threads in einem Programm laufen kann. Der Lebenszyklus von Java-Threads hat 5 Phasen: Neu, Lauffähig, Laufend, Nicht lauffähig (blockiert/wartend), Beendet. |
#2 Was ist der Unterschied zwischen Prozess und Thread? |
Ein Prozess ist ein Programm in Ausführung, während ein Thread eine Teilmenge eines Prozesses ist. Threads teilen sich den Speicher, Prozesse nicht. |
#3 Welche verschiedenen Arten von Thread-Prioritäten gibt es in Java? |
In Java gibt es insgesamt 3 verschiedene Arten von Prioritäten.
- MIN_PRIORITY: Integer 1
- MAX_PRIORITY: Integer 10
- NORM_PRIORITY: Integer 5
|
#4 Was bedeutet Kontextwechsel in Java? |
Kontextwechsel in Java ist der Prozess des Wechsels von einem Thread zu einem anderen durch den Scheduler des Betriebssystems. Bei der Kontextumschaltung wird der Kontext des aktuellen Threads einschließlich seiner Registerwerte und des Programmzählers gespeichert und der Kontext des nächsten Threads wird wiederhergestellt. |
#5 Was ist der Unterschied zwischen Benutzer-Threads und Daemon-Threads? |
In Java haben Benutzer-Threads einen bestimmten Lebenszyklus, der unabhängig von anderen Threads ist und für kritische Aufgaben verwendet wird. Daemon-Threads werden im Grunde als Dienstleister bezeichnet, die Dienste und Unterstützung für Benutzer-Threads bereitstellen. Die JVM wartet nicht darauf, dass Daemon-Threads ihre Aufgaben beenden, sondern wartet auf User-Threads. |
#6 Was ist Synchronisation? |
Die Synchronisierung ist der Mechanismus, der sicherstellt, dass jeweils nur ein Thread auf eine gemeinsam genutzte Ressource zugreifen kann. |
#7 Was ist ein deadlock? |
Ein Deadlock ist eine Situation, in der zwei oder mehr Threads blockiert sind und darauf warten, dass der jeweils andere Thread die Ressourcen freigibt, die sie zum Fortfahren benötigen. |
#8 Was ist der Nutzen der Methoden wait() und notify()? |
Die Methoden wait() und notify() werden in Java für die Kommunikation zwischen den Threads verwendet. |
#9 Was ist der Unterschied zwischen synchronized und volatile in Java? |
Synchronized wird verwendet, um exklusiven Zugriff auf eine gemeinsam genutzte Ressource zu gewähren, indem nur ein Thread gleichzeitig darauf zugreifen kann, während volatile verwendet wird, um die Sichtbarkeit von Änderungen an einer gemeinsam genutzten Variablen zu gewährleisten, indem sichergestellt wird, dass alle Threads denselben Wert sehen. |
#10 Was ist der Zweck der sleep()-Methode in Java? |
Die sleep()-Methode wird verwendet, um die Ausführung eines Threads für eine bestimmte Zeitspanne anzuhalten, damit andere Threads in der Zwischenzeit ausgeführt werden können. |
#11 Was ist der Unterschied zwischen wait() und sleep() in Java? |
wait() ist eine Methode der Klasse Object, die verwendet wird, um die Ausführung eines Threads anzuhalten und die Sperre eines Objekts freizugeben, während sleep() eine Methode der Klasse Thread ist, die verwendet wird, um die Ausführung eines Threads anzuhalten, ohne irgendwelche Sperren freizugeben. |
#12 Was ist der Unterschied zwischen notify() und notifyAll() in Java? |
notify() wird verwendet, um einen einzelnen Thread aufzuwecken, der auf ein Objekt wartet, während notifyAll() verwendet wird, um alle Threads aufzuwecken, die auf ein Objekt warten. |
Hand aufs Herz: Wie viele dieser Fragen hättest du ohne langes Nachdenken beantworten können? Lass es mich in den Kommentaren wissen!