Hallo Leute,
ist es möglich, für eine Zeitspanne (200ms) die Ausführung eines Java-Programmes anzuhalten, ohne eine Thread bemühen zu müssen? Also so was wie das Pascal'sche wait?
so long,
BlueJay
Hallo Leute,
ist es möglich, für eine Zeitspanne (200ms) die Ausführung eines Java-Programmes anzuhalten, ohne eine Thread bemühen zu müssen? Also so was wie das Pascal'sche wait?
so long,
BlueJay
Eigentlich ganz einfach, wenn man's weiss!
Funktioniert auch ohne (mehrere) Threads. Oder anders gesagt: Das Ding was da normalerweise läuft ist ein Thread.Code:Thread.sleep(200);
MfG Peschmä
Geändert von peschmae (19-08-2007 um 10:42 Uhr)
The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)
Aber Achtung: Kann ne exception werfen
MfG Bischi
"There is an art, it says, or rather, a knack to flying. The knack lies in learning how to throw yourself at the ground and miss it" The hitchhiker's guide to the galaxy by Douglas Adams
--> l2picfaq.pdf <-- www.n.ethz.ch/~dominikb/index.html LaTeX-Tutorial, LaTeX-Links, Java-Links,...
Selbstverständlich - dafür sind die Exceptions ja da. Es kann ja während des sleep Wichtiges außerhalb des Threads passiert sein (z. B. ein Signal wie SIGTERM beim Shutdown oder SIGQUIT durch Benutzereingabe), was eine InterruptedException auslöst - da sollte man schon reagieren - und z. B. aufräumen, Filehandler schließen usw. Ein Abschuss durch SIGKILL ist nun mal für jeden Prozess das Letzte, was man wünscht.
Jan
Das ist je kein Aufwand. Wenn du die Exception immer gleich behandeln willst, kannst du dir ja eine Utility Klasse machen:
Code:public class WaitDammit { public static void sleep(long millis) { try { Thread.sleep(millis); } catch (InterruptedException e) { e.printStackTrace(System.err); } } }Ciao,Code:// wait, don't care WaitDammit.sleep(200);
_
Qt/KDE Entwickler
Debian Benutzer
Also, wenn ich schon Exceptions abfange, will ich einen Hinweis auf die mögliche Ursache geben. Da ist es mit "Noch 'ne Klasse" nicht (immer) getan.
Ich stöhne nur deshalb, weil ich auf diese Weise schon die rms-, Image- und sonstige Klassen an meine Bedürfnisse anpassen musste.
Bisher bin ich von php und Javascript verwöhnt worden, nun muss ich wohl wieder arbeiten lernen
Für mich ist der obige Vorschlag derselbe Aufwand wie meine übliche Zeitschleife, nur dass ich den Thread indirekt anspreche. Also mach ich mir dann doch gleich einen Pointer drauf (ein Objekt), um ihn besser zu kontrollieren.
so long,
BlueJay
Eigentlich ganz einfach, wenn man's weiss!
Dann gewinnen die Langoliers - und Dein armes Programm wird mit Haut und Haaren gefressen Spätestens wenn SIGKILL kommt, hat kein Programm mehr die Chance, sich sauber zu beenden (also rechtzeitig wieder ins Flugzeug zu steigen). Deshalb sollte man die Exception abfangen und dafür sorgen, dass es nicht zu dem traurigen Finale kommt.
Jan
EDIT: Es ist natürlich klar, dass der sleep bei einer Exception abgebrochen wird. Das Abfangen soll nur dafür sorgen, dass Dein Java-Programm in diesem Fall angemessen reagiert.
Geändert von jan61 (20-08-2007 um 20:30 Uhr)
Der (Thread-)Exception (des Refresh-Loops) ruft bei mir in diesem Fall nur "FEIERABEND!"
Schlimmer wäre es, wenn die Langoliers nicht zuschnappen,d.h. der Feierabend verpennt wird.
Bin mit Java als Betriebssystem noch nicht so vertraut, es fällt mir schwer, zu glauben, dann man sich (angeblich) nicht ums Aufräumen (belegte Ressourcen wieder freigeben) kümmern muss.
Geändert von BlueJay (21-08-2007 um 12:27 Uhr) Grund: noch'n Gag reinhauen
Eigentlich ganz einfach, wenn man's weiss!
Lesezeichen