Anzeige:
Ergebnis 1 bis 10 von 10

Thema: Programm anhalten ohne Thread

  1. #1
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825

    Programm anhalten ohne Thread

    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!

  2. #2
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Code:
    Thread.sleep(200);
    Funktioniert auch ohne (mehrere) Threads. Oder anders gesagt: Das Ding was da normalerweise läuft ist ein Thread.

    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)

  3. #3
    Registrierter Benutzer Avatar von bischi
    Registriert seit
    10.04.2003
    Beiträge
    4.828
    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,...

  4. #4
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    Zitat Zitat von bischi Beitrag anzeigen
    Aber Achtung: Kann ne exception werfen

    MfG Bischi
    Also doch besser die ganze "Abfangstation" wieder einbauen!

    so long,
    BlueJay
    Eigentlich ganz einfach, wenn man's weiss!

  5. #5
    Registrierter Benutzer
    Registriert seit
    07.05.2007
    Beiträge
    656
    Zitat Zitat von BlueJay Beitrag anzeigen
    Also doch besser die ganze "Abfangstation" wieder einbauen!
    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

  6. #6
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Zitat Zitat von BlueJay Beitrag anzeigen
    Also doch besser die ganze "Abfangstation" wieder einbauen!
    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);
            }
        }
    }
    Code:
    // wait, don't care
    WaitDammit.sleep(200);
    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  7. #7
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    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!

  8. #8
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    Zitat Zitat von jan61 Beitrag anzeigen
    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)
    Du meinst, der Thread verschläft den Weltuntergang und läuft danach einfach weiter? Was ist dann mit der Garbage Collection? (den Langoliers )

    so long,
    BlueJay
    Eigentlich ganz einfach, wenn man's weiss!

  9. #9
    Registrierter Benutzer
    Registriert seit
    07.05.2007
    Beiträge
    656
    Zitat Zitat von BlueJay Beitrag anzeigen
    Du meinst, der Thread verschläft den Weltuntergang und läuft danach einfach weiter? Was ist dann mit der Garbage Collection? (den Langoliers )
    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)

  10. #10
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •