sleep vom Hauptthread wirft InterruptedException

8

Ich habe den Hauptthread der Ausführung, der neue Threads hervorbringt. Im Hauptthread der Ausführung in main () rufe ich Thread.sleep() auf. Wann bekomme ich eine Unbehandelte Ausnahme InterruptedException ?.

Ich bin mir nicht sicher, warum ich das verstehe. Ich dachte, dies war, weil ich einen Verweis auf den Haupt-Thread brauchte, also ging ich weiter und machte einen Verweis auf es über Thread.currentThread() .

Ist das nicht der Weg, den Faden schlafen zu lassen? Was ich tun muss, ist das Warten auf den Hauptthread / sleep / delay, bis es wieder funktioniert.

    
Chris 18.04.2010, 18:36
quelle

3 Antworten

18

Was Sie sehen, ist ein Kompilierungsfehler, da Sie die geprüfte Ausnahme ( InterruptedException in diesem Fall) nicht korrekt behandelt haben. Handhabung bedeutet einen der folgenden Schritte auszuführen:

1) Deklaration der Methode als throws InterruptedException , so dass der Aufrufer die Ausnahme behandeln muss

2) Abfangen mit einem try{..}catch(..){..} -Block. Zum Beispiel:

%Vor%

InterruptedException wird verwendet, um anzuzeigen, dass der aktuelle Thread durch einen externen Thread unterbrochen wurde, während er eine blockierende Operation ausführt (z. B. unterbrechbare E / A, Warten, Ruhezustand)

    
Eyal Schneider 18.04.2010, 18:48
quelle
0

Fügen Sie in der Zeile, in der Sie main definieren, einfach throws Ausnahme ein. Auch ich hatte ein ähnliches Problem, und das half. Nach dieser Aufnahme müssen Sie Thread.sleep (xx); nicht in eine try-catch-Anweisung einfügen

    
ashutosh 12.06.2017 11:22
quelle
-2

Thread.sleep (t);

So können Sie Ihren Thread warten lassen. wo t in Millisekunden ist. Es funktioniert gut in meiner Hauptmethode, also um Ihr Problem herauszufinden, wäre es besser, wenn Sie Ihren Code hier bereitstellen können.

    
GuruKulki 18.04.2010 18:46
quelle

Tags und Links