Sobes.tech
Junior — Middle

Werden in der Praxis Mechanismen wie synchronized, wait und notifyAll zur Steuerung von Threads verwendet?

sobes.tech KI

Antwort von AI

Ja, in der Java-Programmierung werden die Mechanismen synchronized, wait und notifyAll verwendet, um Threads zu steuern, insbesondere in Fällen, in denen eine Low-Level-Synchronisation und Koordination zwischen Threads erforderlich ist.

  • synchronized wird verwendet, um gegenseitigen Ausschluss beim Zugriff auf gemeinsame Ressourcen zu gewährleisten.
  • wait() lässt den aktuellen Thread warten, wobei der Monitor freigegeben wird, bis ein anderer Thread notify() oder notifyAll() aufruft.
  • notifyAll() weckt alle Threads, die auf dieses Objekt warten.

In modernen Anwendungen werden jedoch häufiger höherstufige Mittel aus dem Paket java.util.concurrent verwendet (z.B. Lock, Semaphore, CountDownLatch), da diese flexibler und bequemer sind.

Beispiel für die Verwendung von synchronized, wait und notifyAll:

class SharedResource {
    private boolean ready = false;

    public synchronized void waitForReady() throws InterruptedException {
        while (!ready) {
            wait();
        }
        // Arbeit fortsetzen
    }

    public synchronized void setReady() {
        ready = true;
        notifyAll();
    }
}