EneR: setTimeout(1000); in Java? Bibliotheksprobleme mit JCreator

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!!!

  1. Hi,

    mit ...

    Thread.sleep(1000); // schlaeft 1 Sekunde

    1. 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?

      1. 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 :)

        1. Vielen Dak für die Hilfe funktioniert jetzt :D

          1. 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 ...

        2. 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

      2. 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

  2. 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

    1. 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

      1. 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