Wie kann ich in java eine Pause einbauen ohne das ich das ganze Programm stoppe?
Wie kann ich in java eine Pause einbauen ohne das ich das ganze Programm stoppe?
z.B:
boolean a = false;
(dann diese Pause von z.B. 10s)
boolean a = true;
Aber während dessen soll alles andere weiter laufen. Also nur so ne 10s Blocker für diesen Ablauf!
Weiß Jemand Wie das geht?
4 Antworten
Das geht mit einem Timer: http://docs.oracle.com/javase/6/docs/api/java/util/Timer.html Oder aber mit einem Thread.sleep(), aber dann ist das Programm geblockt (wenn Du nur den main-Thread hast). Bei eigenen Threads können die Hintergrundthreads weiterlaufen.
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.
Dann hängt das ganze Programm, außer das passiert in einem eigenen Thread. Würde ich aber nicht empfehlen.
wenn du es richtig programmierst bleibt nicht das ganze programm stehen!
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...
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
Ich sag ja, das hängt vom Programm ab. Gibt da keine Lösung für alles.
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