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?
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.
Das bereitgestellte Java -Programm demonstriert das Konzept:
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();
}
}
}
Performance -Vorteile
kill -s SIGUSR1
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