setTimeout(1000); in Java? Bibliotheksprobleme mit JCreator
EneR
- java
0 dr.colossos0 EneR0 dr.colossos0 Slyh
0 Christian Seiler0 Slyh
Hallo,
Gibt es etwas verglichbares wie "setTimeout(1000);" in java bzw welche Bibliothek muss ich hinzufügen?
Ich benutze JCreator, weis jemand wie ich dort die Programmbibliothek Prog1Tools.IOTools einfüge?
Danke schon einmal im Vorraus!!!
Hi,
mit ...
Thread.sleep(1000); // schlaeft 1 Sekunde
Thread.sleep(1000); // schlaeft 1 Sekunde
Danke für die schnelle Antwort, aber wenn ich das in das Programm einbaue kommt folgendes:
unreported exception java.lang.InterruptedException; must be caught or declared to be thrown
Wenn ich dann
try {
thread.sleep(1000);
}
catch(interuptedException e) {
}
(Auch wenn ich interupted mit "rr" also interrupted schreibe) kommt folgender Fehler:
cannot resolve Symbol class inter(r)uptedException
KAnn mir da jemand weiterhelfen?
noch eine Frage:
warum muss man überhaupt mit "catch(interuptedException e)" arbeiten?
Hi,
versuch
try {
thread.sleep(1000);
}
catch(Exception e) {
}
Fuer
[...]
catch(interuptedException e)
[...]
brauchtst du wohl noch einen include ,,, mit Exception e funktionierts sicher.
Das brauchst deswegen, weil Thread.sleep eine Exceptioon werfen kann ... sorry, weiss aber nicht wieso die geworfen wird - Tatsache :)
Vielen Dak für die Hilfe funktioniert jetzt :D
Hi,
ja, sorry, geb ich zu dass die Antwort nicht wirklich perfekt war und auch alles andere als vollstaendig.
Dass man nicht die Expection-Klasse abfangen soll, sondern eine moeglichst spezielle ist richtig. Aber beim besten Willen, ich weiss nicht auswendig was welche Klasse Methode wirft - und ich denke das ist die Angelegenheit des Programmierers. Zugegeben, ich haette es anmerken sollen, was ich jetzt nachhole.
Auch denke ich, das es die Aufgabe des Lesers bei Hintergrundfragen selbst nachzulesen ... wieso soll ich auf java.com gehen und in der API nachlesen wenn das jeder selbst machen kann ...
Egal, Kritik angenommen und verstanden, war ein wenig in Eile ...
Hallo,
try {
thread.sleep(1000);
}
catch(Exception e) {}
Ganz spitze. Damit hast du eine konkrete Exception (InterruptedException)
durch die allgemein Exception-Klasse ersetzt. Das funktioniert zwar,
ist aber üblicherweise eine eher schlechte Idee, weil du ggf. wichtige
Informationen, die du über den konkreten Typ der Exception erhältst,
einfach verwirfst.
Thread.sleep() wirft zum Beispiel noch eine IllegalArgumentException, die
nicht explizit gefangen werden muß, weil sie von RuntimeException
abgeleitet ist. Diese will man hier auch eher nicht fangen, weil sie
(in diesem Fall) auf einen Programmierfehler hinweist. Einfach den
Bug zu ignorieren, indem man das allgemeine Exception fängt und verwirft,
ist eine sehr schlechte Idee.
Besser die IllegalArgumentException wird vom Laufzeitsystem gefangen und
ausgegeben. Dann kann man nämlich auch entsprechend reagieren und das
Programm korrigieren.
Fuer
[...]
catch(interuptedException e)
[...]
brauchtst du wohl noch einen include ,,, mit Exception e funktionierts sicher.
Nein, braucht man nicht, weil InterruptedException, genau wie Exception
im Package java.lang liegt, das standardmäßig importiert wird.
Das brauchst deswegen, weil Thread.sleep eine Exceptioon werfen kann ... sorry, weiss aber nicht wieso die geworfen wird - Tatsache :)
Sehr gute Antwort. Nicht.
Gruß
Slyh
Hallo,
unreported exception java.lang.InterruptedException; must be caught or declared to be thrown
Wenn ich dann
try {
thread.sleep(1000);
}
catch(interuptedException e) {}
(Auch wenn ich interupted mit "rr" also interrupted schreibe) kommt folgender Fehler:
cannot resolve Symbol class inter(r)uptedException
KAnn mir da jemand weiterhelfen?
Also, ich weiß nicht, aber per Copy&Paste den oben genannte Klassennamen
(InterruptedException) zu übernehmen, finde ich jetzt nicht so schwer.
Es liegt natürlich an der inkorrekten Groß/Kleinschreibung und dem
fehlenden 'r'.
Außerdem ist das da oben "falsch". Thread.sleep() ist eine statische
Methode, die du nicht an einem Objekt, sondern an einer Klasse aufrufen
solltest, also: Thread.sleep(1000);
noch eine Frage:
warum muss man überhaupt mit "catch(interuptedException e)" arbeiten?
Weil Thread.sleep() die Exception InterruptedException wirft. Und da
diese Exception nicht von RuntimeException ableitet, muß sie, wie alle
anderen Exceptions, die nicht von RuntimeException ableiten, gefangen
oder weitergeworfen werden.
Warum Thread.sleep() eine solche Exception wirft, steht in der Dokumentation
der Methode Thread.sleep().
Gruß
Slyh
Hallo,
Gibt es etwas verglichbares wie "setTimeout(1000);" in java bzw welche Bibliothek muss ich hinzufügen?
Es gibt in Java die Methode sleep, die das Programm für eine gewisse Zeit schlafenlegt. Wenn Du also
Thread.sleep (1000);
machst, dann wird das Programm für 1000 Millisekunden unterbrochen.
Das ist nicht exakt das gleiche wie setTimeout. Wenn Du eine 100%ige Entsprechung willst, dann suchst Du vermutlich java.util.Timer oder (falls Du AWT/Swing verwendest) javax.swing.Timer. Beachte jedoch, dass auf Grund der Tatsache, dass beide Timer-Klassen Threads verwenden, die Semantiken wesentlich komplizierter werden, als bei sleep().
Ich benutze JCreator, weis jemand wie ich dort die Programmbibliothek Prog1Tools.IOTools einfüge?
Zu JCreator oder der Bibliothek von der Du sprichst kann ich Dir leider nichts sagen.
Viele Grüße,
Christian
Hallo,
Beachte jedoch, dass auf Grund der Tatsache, dass beide Timer-Klassen Threads verwenden, die Semantiken wesentlich komplizierter werden, als bei sleep().
new Timer().schedule(new TimerTask() {
public void run() {
// mach was
}
}, 1000);
Das ist doch nicht kompliziert! ;-)
(Unkompilierter Code. Können durchaus noch Syntaxfehler drin sein!)
Gruß
Slyh
Hallo Slyh,
Beachte jedoch, dass auf Grund der Tatsache, dass beide Timer-Klassen Threads verwenden, die Semantiken wesentlich komplizierter werden, als bei sleep().
new Timer().schedule(new TimerTask() {
public void run() {
// mach was
}
}, 1000);
>
> Das ist doch nicht kompliziert! ;-)
Ja, vom Code her nicht. ;-)
Viele Grüße,
Christian