CodeGym
AI Academy
Aktion
CodeGym University
Lernen
Kurse
Aufgaben
Umfragen & Quizze
Spiele
Hilfe
Zeitplan
Community
Nutzer
Forum
Chat
Artikel
Erfolgsgeschichten
Aktivität
Bewertungen
Abonnements
Helles Design

Lektionen

  • Bewertungen
  • Über uns
Start
Jetzt lernen
Jetzt lernen
  • Mein Fortschritt
  • Kurse
  • Quest-Karte
  • Lektionen
  • Deadlock: Ursachen, Beispiele, Behebung

    JAVA 25 SELF
    Level 53,Lektion 0
    In der Vorlesung behandeln wir, was eine gegenseitige Blockierung von Threads (Deadlock) in Java ist, warum sie auftritt und welche vier Bedingungen dafür nötig sind. An einem praktischen Beispiel mit synchronized zeigen wir die Reproduktion des Problems und lernen anschließend Präventionsstrategien: einheitliche Reihenfolge beim Erfassen von Ressourcen, Einsatz von ReentrantLock.tryLock mit Timeout, Verkürzung kritischer Sektionen und Verzicht auf unnötig verschachtelte Sperren. Wir demonstrieren die Diagnose per Thread Dump und jstack, wie man die Zustände BLOCKED/ WAITING erkennt, und schließen mit einer Checkliste und typischen Fehlern ab.
    Verfügbar
  • Livelock und Starvation: Definitionen, Beispiele

    JAVA 25 SELF
    Level 53,Lektion 1
    Wir betrachten die nebenläufigen Anomalien Livelock und Starvation: wie sie sich von Deadlock unterscheiden, wie sie im Code und in Logs aussehen. Gezeigt werden Beispiele in Java: „höfliche Arbeiter“ (lebendige Blockierung) sowie Verhungern durch Prioritäten und aufgrund unfairer Sperren. Wir lernen, das Problem zu erkennen (Logging, Thread dump, VisualVM, Java Mission Control) und es zu verhindern: zufällige Verzögerungen vor einem erneuten Versuch ( Thread.sleep), nicht blockierende Algorithmen, faire Sperren via ReentrantLock mit dem Flag fairness ( new ReentrantLock(true)), saubere kritische Abschnitte und Verzicht auf übermäßige Nutzung von setPriority() und synchronized.
    Verfügbar
  • Thread-sichere Collections: ConcurrentHashMap und andere

    JAVA 25 SELF
    Level 53,Lektion 2
    In dieser Vorlesung schauen wir uns an, warum gewöhnliche Collections ( ArrayList, HashMap) in einer Multithreading-Umgebung gefährlich sind und welche thread-sicheren Alternativen das Paket java.util.concurrent bietet: ConcurrentHashMap, CopyOnWriteArrayList, ConcurrentLinkedQueue, Strukturen auf Basis von Skip-Lists und BlockingQueue. Wir besprechen atomare Operationen wie merge, putIfAbsent, computeIfAbsent, vergleichen mit Collections.synchronizedMap, betrachten praktische Beispiele und typische Fehler (schwach konsistente Iteratoren, nicht atomare Operationssequenzen usw.).
    Verfügbar
  • AtomicInteger, AtomicReference: atomare Operationen

    JAVA 25 SELF
    Level 53,Lektion 3
    Warum der Inkrementoperator i ++ in der Nebenläufigkeit nicht funktioniert, was atomare Operationen sind und wie das Paket java.util.concurrent.atomic sie bereitstellt. Wir beleuchten AtomicInteger und AtomicReference, die Methoden incrementAndGet(), compareAndSet(...), den internen Mechanismus CAS (Compare-And-Swap) sowie wann man besser synchronized wählt und wann — LongAdder. Am Ende — typische Fehler: zusammengesetzte Operationen, ABA und Threadsicherheit verschachtelter Objekte.
    Verfügbar
  • Diagnose und Debugging von Multithread-Programmen

    JAVA 25 SELF
    Level 53,Lektion 4
    Wie man einen Thread Dump mithilfe von jstack, VisualVM und der IDE aufnimmt und liest, Thread-Zustände ( RUNNABLE, BLOCKED, WAITING) erkennt und gegenseitige Blockierungen findet. Wir betrachten das Thread-Monitoring in Java Mission Control und Java Flight Recorder, Logging-Praktiken (Thread-Namen, Ein-/Austritt aus synchronized), die Minimierung von Sperren, Concurrency-Tests mit CountDownLatch sowie die Analyse eines realen Deadlock-Falls. Zum Schluss – typische Fehler und wie man sie vermeidet.
    Verfügbar
Lernen
  • Registrierung
  • Java-Kurs
  • Hilfe bei Aufgaben
  • Preise
  • Java-Syntax
Community
  • Nutzer
  • Artikel
  • Forum
  • Chat
  • Erfolgsgeschichten
  • Aktivität
  • Partnerprogramm
Unternehmen
  • Über uns
  • Kontakte
  • Bewertungen
  • Presse
  • CodeGym for EDU
  • FAQ
  • Support
CodeGymCodeGym ist ein Online-Kurs zum Erlernen der Java-Programmierung von Grund auf. Dieser Kurs ist eine perfekte Möglichkeit, Java als Anfänger zu meistern. Er enthält über 1200 Aufgaben mit sofortiger Überprüfung und einen wesentlichen Umfang an Java-Grundlagentheorie. Um Ihren Lernerfolg zu unterstützen, haben wir eine Reihe motivierender Funktionen implementiert: Quizze, Programmierprojekte, Inhalte zum effizienten Lernen und Karriereinformationen für Java-Entwickler.
Folgen Sie uns
Interface-Sprache
English
Deutsch
Español हिन्दी Français Português Polski বাংলা 简体中文 मराठी தமிழ் Italiano Bahasa Indonesia 繁體中文 Nederlands 日本語 한국어 Bulgarian Danish Hungarian Basa Jawa Malay Norwegian Romanian Swedish Telugu Thai Українська Filipino Turkish Azərbaycan Русский Vietnamese
"Programmierer werden gemacht, nicht geboren" © 2026 CodeGym
MastercardVisa
"Programmierer werden gemacht, nicht geboren" © 2026 CodeGym