Wie kann ich in java eine Pause einbauen ohne das ich das ganze Programm stoppe?

4 Antworten

Um deinen Code zu Pausieren, ohne deinen Hauptthread zu blockieren, muss du ihn in einem separaten Thread ausführen, den du dann nach belieben schlafen legen kannst:

Beispiel:

public void foo() {
    //Hauptthread
    boolean a = false;
    new Thread(
        new Runnable() {
            public void run() {
                //Nebenthread Anfang
                try {
                    Thread.sleep(10 * 1000); //10 Sekunden warten
                } catch (Exception e) {
                    e.printStackTrace();
                }
                a = true;
                //Nebenthread Ende
            }
        }).start();
    //Das hier wird nicht angehalten,
    //sondern wird (fast) direkt nach "boolean a = false" ausgeführt
}

Die variable a sollte in der Praxis natürlich nicht lokal sein.

Thread.sleep();

Als Parameter die Zeit in Millisekunden.

Rouder 
Fragesteller
 13.11.2012, 19:06

Aber dann Ist das ganze Programm in der Zeit Down! z.B ich will ein Game machen und das Springen ( die boolean a = true) soll nach dem springen für 5s false sein. Wen ich Thread.sleep(); nutzen würde, würde sich das Spiel für 5s Aufhängen

0
Klugscheiser15  13.11.2012, 19:23
@Rouder

wenn du es richtig programmierst bleibt nicht das ganze programm stehen!

0
tobistenzel  13.11.2012, 19:07

Dann hängt das ganze Programm, außer das passiert in einem eigenen Thread. Würde ich aber nicht empfehlen.

0

So allgemein kann man das nicht sagen, das hängt ab, was das für ein Programm ist. Irgendetwas in Richtung "Timer" wäre da am Sinnvollsten. Mit selbst erstellten Threads würde ich lieber nicht herumspielen, das geht schnell genug schief...

Rouder 
Fragesteller
 13.11.2012, 19:14

Du sagtest: "Irgendetwas in Richtung "Timer" wäre da am Sinnvollsten."

Kannst Du mir mal so ungefähr schicken wie das dann aussehn würde oder was ich für einen Cod Brauche

0
tobistenzel  13.11.2012, 19:18
@Rouder

Ich sag ja, das hängt vom Programm ab. Gibt da keine Lösung für alles.

0