Heim > Java > javaLernprogramm > So lösen Sie eine Warteanrufunterbrechung in Java

So lösen Sie eine Warteanrufunterbrechung in Java

WBOY
Freigeben: 2023-04-25 10:34:06
nach vorne
1330 Leute haben es durchsucht

1. Lösung

(1) Bei Verwendung von Java-Threads wird häufig die Wartemethode verwendet. Wenn sie beim Aufruf der Wartemethode unterbrochen wird, erfasst der JVM die Unterbrechung und ruft weiterhin die Warteanweisung auf.

(2) Selbst wenn Sie zu diesem Zeitpunkt die Interrupt-Sendemethode verwenden, tritt keine Auswirkung auf.

(3) Die Wartemethode muss gekapselt werden, die Ausnahme abfangen und dann die Ausführung der Ausnahme beenden.

2. Beispiel

public static void wait(Object obj) {
        boolean interrupted = true;
        while (interrupted) {
            interrupted = false;
            try {
                obj.wait();
            }
            catch (InterruptedException e) {
                interrupted = true;
            }
        }
    }
 
    public static void wait(Object obj, int timeout) {
        boolean interrupted = true;
        long startTime = System.currentTimeMillis();
        int sleepTimeout = timeout;
 
        while (interrupted) {
            interrupted = false;
            try {
                obj.wait(sleepTimeout);
            }
            catch (InterruptedException e) {
                interrupted = true;
                long now = System.currentTimeMillis();
                sleepTimeout -= now - startTime;
                startTime = now;
                if (sleepTimeout < 0) {
                    interrupted = false;
                }
            }
        }
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSo lösen Sie eine Warteanrufunterbrechung in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage