„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wird in Java wirklich ein falsches Wakeup passieren?

Wird in Java wirklich ein falsches Wakeup passieren?

Gepostet am 2025-05-04
Durchsuche:147

Do Spurious Wakeups in Java Really Occur?

falsche Aufwachen in Java: Realität oder Mythos?

Das Konzept des falschen Aufwachens in der Java -Synchronisation ist seit geringer Zeit ein Thema der Diskussion. Während das Potenzial für ein solches Verhalten besteht, bleibt die Frage: Gehen sie tatsächlich in der Praxis auf?

Linuxs Weckmechanismus

gemäß dem Artikel von Wikipedia über falsche Wakeups nutzen die Linux -Implementierung des FUTEX -Systems die FUTEX -Systemanruf. Wenn ein Prozess ein Signal empfängt, kann er abrupt mit EINTR zurückkehren, was dazu führt, dass seine Blockierungssysteme frühzeitig beenden. Infolgedessen kann ein POSIX -Signal ein falsches Wakeup auslösen.

Beispiel in Java

Das bereitgestellte Java -Programm demonstriert das Konzept:

public class lastious { public static void main (String [] args) { Lock Lock = New Reentrantlock (); Zustand cond = lock.newCondition (); lock.lock (); versuchen { versuchen { Cond.aait (); System.out.println ("Spurious Wakeup!"); } catch (InterruptedException ex) { System.out.println ("Nur ein regulärer Interrupt."); } } Endlich { lock.unlock (); } } }

fordert falsche Wecks
public class Spurious {
    public static void main(String[] args) {
        Lock lock = new ReentrantLock();
        Condition cond = lock.newCondition();
        lock.lock();
        try {
            try {
                cond.await();
                System.out.println("Spurious wakeup!");
            } catch (InterruptedException ex) {
                System.out.println("Just a regular interrupt.");
            }
        } finally {
            lock.unlock();
        }
    }
}

töten -s sigusr1

Performance -Vorteile
kill -s SIGUSR1 
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3