CodeGym
Aktion
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
  • Entwurfsmuster Observer (Beobachter)

    JAVA 25 SELF
    Level 50,Lektion 3
    Das Verhaltensmuster „Beobachter“: die Rollen Subject und Observer, An-/Abmeldung über addObserver/ removeObserver sowie das Versenden von Benachrichtigungen mit notifyObservers. Wir beleuchten den Bezug zum Ereignismodell von Java: button. addActionListener( listener) ; → Aufruf von actionPerformed(). Praxis an Beispielen (Thermometer und Klimaanlage, Mini‑Zähler und Lambdas) sowie warum java.util.Observable/ Observer veraltet sind und welche modernen Ansätze es gibt.
    Verfügbar
  • EDT-Thread und lang andauernde Operationen in der UI

    JAVA 25 SELF
    Level 50,Lektion 4
    In dieser Vorlesung erklären wir, was der Thread zur Verarbeitung von UI‑Ereignissen — EDT — in Swing ist und welches Pendant es im JavaFX Application Thread gibt, warum UI‑Komponenten nicht threadsicher sind und weshalb das Fenster bei schweren Aufgaben „einfriert“. Wir zeigen richtige Vorgehensweisen: Auslagerung der Berechnungen in den Hintergrund via new Thread(...), Aktualisierung der Oberfläche per Aufrufen von SwingUtilities.invokeLater und Platform.runLater sowie die Nutzung höherstufiger Werkzeuge SwingWorker<T, V> und Task<V>/ Service<V> für Fortschritt, Abbruch und Fehlerbehandlung.
    Verfügbar
  • Einführung in die Nebenläufigkeit: wozu sie benötigt wird

    JAVA 25 SELF
    Level 51,Lektion 0
    Warum Programme Threads und Nebenläufigkeit brauchen: von einer reaktionsschnellen Oberfläche bis zur Auslastung aller CPU‑Kerne. Wir klären den Unterschied zwischen Prozessen und Threads, die Rolle des Haupt-Threads main in der JVM, praktische Anwendungsfälle (UI, Server, Dateiverarbeitung) und Risiken: race condition, deadlock sowie grundlegende Synchronisationswerkzeuge wie synchronized. Wir zeigen ein einfaches Beispiel mit Thread und dem parallelen Start zweier Aufgaben.
    Verfügbar
  • Starten von Threads: Thread und Runnable, Syntax

    JAVA 25 SELF
    Level 51,Lektion 1
    In dieser Vorlesung behandeln wir das Starten von Threads in Java: Wir lernen die Klasse Thread und das Interface Runnable kennen, üben den korrekten Aufruf von start() und verwechseln ihn nicht mit run(), verwenden anonyme Klassen und Lambda-Ausdrücke, starten mehrere Threads und betrachten den Lebenszyklus ( NEW → RUNNABLE → TERMINATED). Außerdem sprechen wir über die Methoden Thread.currentThread(), getName(), das Warten per join() und typische Fehler wie IllegalThreadStateException.
    Verfügbar
  • Zustände und Lebenszyklus eines Threads

    JAVA 25 SELF
    Level 51,Lektion 2
    Wir analysieren den Lebenszyklus eines Threads in Java: von Thread.State (
    NEW
    ,
    RUNNABLE
    ,
    BLOCKED
    ,
    WAITING
    ,
    TIMED_WAITING
    ,
    TERMINATED
    ) bis zu den Übergängen zwischen ihnen. Wir lernen, Threads mithilfe von Thread.sleep(...), join(), interrupt() zu steuern, den Zustand über isAlive() und getState() zu diagnostizieren sowie veraltete Methoden wie stop()/ suspend()/ resume() zu vermeiden. Am Ende – praktische Tipps und häufige Fehler.
    Verfügbar
  • Parameter und Prioritäten von Threads

    JAVA 25 SELF
    Level 51,Lektion 3
    Wie man Parameter sicher an Threads über den Konstruktor der Klasse, die Runnable implementiert, übergibt, wann Lambda-Ausdrücke sinnvoll sind und warum Felder besser final sein sollten. Wir besprechen Thread-Prioritäten: die Methoden setPriority/ getPriority, die Konstanten Thread.MIN_PRIORITY, Thread.NORM_PRIORITY, Thread.MAX_PRIORITY und ihren Einfluss auf den Scheduler. Außerdem – das Benennen von Threads über den Konstruktor, setName/ getName, ein praktisches Beispiel und typische Fehler (gemeinsames Runnable, Setter, Hoffnungen in Prioritäten).
    Verfügbar
  • Race Condition (Wettlaufsituation)

    JAVA 25 SELF
    Level 51,Lektion 4
    In dieser Vorlesung erklären wir, was eine Race Condition ist: wenn mehrere Threads gleichzeitig auf gemeinsame Daten zugreifen und das Ergebnis von der Planungsreihenfolge abhängt. Am Beispiel des Inkrements counter ++ zeigen wir, warum die Operation nicht atomar ist und wie Inkremente verloren gehen. Wir besprechen einen Praxisfall mit einem Bankkonto, die Folgen im Produktivbetrieb und Schutzansätze: synchronized, atomare Typen aus java.util.concurrent.atomic (zum Beispiel AtomicInteger) sowie Immutabilität. Wir schließen mit dem Abschnitt „Typische Fehler“ ab, in dem erläutert wird, warum Thread-Bugs von Tests selten erfasst werden und warum es sinnlos ist, sie mit Thread. sleep( 1) zu „heilen“.
    Verfügbar
  • Gemeinsame Ressourcen und Synchronisation: Zugriffsprobleme

    JAVA 25 SELF
    Level 52,Lektion 0
    Diese Vorlesung erklärt, was eine gemeinsame Ressource in nebenläufigen Anwendungen ist, warum Race Conditions und „verlorene Updates“ auftreten, und wie man Daten mit synchronized schützt. Wir besprechen grundlegende Synchronisationsmuster (Methoden und Blöcke), sprechen über moderne Werkzeuge aus java.util.concurrent ( Lock, ReentrantLock, Semaphore u. a.), sehen praktische Beispiele mit dem Inkrement eines Zählers und typische Fehler (Nicht-Atomarität von i ++, falsches Lock-Objekt, Mythen über volatile).
    Verfügbar
  • synchronized, volatile: Syntax, Anwendung

    JAVA 25 SELF
    Level 52,Lektion 1
    Praktische Vorlesung zur Nebenläufigkeit: Wir erklären, wie das Schlüsselwort synchronized funktioniert (Blöcke und Methoden, Objektmonitor und Sperre auf Klassenebene ClassName.class), worin sich die Sichtbarkeit von Änderungen über volatile von der Atomarität von Operationen unterscheidet, warum boolean-Flags sich gut als volatile eignen, und warum das Inkrement count ++ Synchronisierung erfordert. Wir stellen gegenüber, wann man synchronized wählt und wann – volatile, und besprechen typische Fehler.
    Verfügbar
  • ReentrantLock und ReadWriteLock: Unterschiede, Beispiele

    JAVA 25 SELF
    Level 52,Lektion 2
    Praktischer Vergleich der klassischen Synchronisation über synchronized mit den flexibleren Primitiven aus dem Paket java.util.concurrent.locks: ReentrantLock und ReadWriteLock. Wir schauen uns an, wie man Sperren explizit steuert ( lock()/ unlock(), tryLock() mit Timeout), wie man das Lesen mit ReentrantReadWriteLock skaliert, was „Fairness“ ( fair-Modus) bedeutet, wo welches Werkzeug sinnvoll ist und welche Fehler am häufigsten vorkommen.
    Verfügbar
  • Mutexe und Semaphore: Syntax und Aufgaben

    JAVA 25 SELF
    Level 52,Lektion 3
    In dieser Vorlesung behandeln wir zentrale Synchronisationsprimitiven in Java: wie man kritische Abschnitte mit synchronized und der Klasse ReentrantLock (Methoden lock()/ unlock(), Konstrukt try- finally) schützt, sowie wie man Parallelität über Semaphore (Methoden acquire()/ release()) begrenzt. Wir vergleichen Mutex und Semaphore in einer Tabelle, betrachten praktische Use-Cases (Bank, Server mit Verbindungs-Limit) und typische Fehler, die zu deadlock und Performanceverlusten führen.
    Verfügbar
  • Analyse typischer Synchronisationsfehler

    JAVA 25 SELF
    Level 52,Lektion 4
    Praktische Analyse häufiger Fehler der Nebenläufigkeit in Java: vergessenes unlock()/ release() bei ReentrantLock und Semaphore (behebbar mit try- finally), die Wahl des falschen Monitors für synchronized, gegenseitige Blockierungen (Deadlock) und die Reihenfolge der Lock-Akquise, übermäßige Synchronisation sowie die Grenzen der Anwendbarkeit von volatile und der Ersatz durch AtomicInteger. Beispiele, Tipps und eingängige Analogien – damit der Code nicht „einfriert“.
    Verfügbar
  • 1
  • ...
  • 22
  • 23
  • 24
  • 25
  • 26
  • ...
  • 30
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