Methoden Timer

Diskutiere Timer im Java Basics - Anfänger-Themen Bereich.
L

Lasnik

Hi, gibt es eine eine Möglichkeit, einen Timer runter laufen zu lassen, in einer if Methode, der ähnlich ist wie:

import java.util.concurrent.TimeUnit;
TimeUnit.SECONDS.sleep (0)

Nur, dass er nicht das gesamte Programm warten lässt, sondern die if-Schleife?
 
L

Lasnik

Ups...

Ich will einen Timer in der if-Abfrage runterzählen lassen, nachdem dieser dann runtergezählt hat soll der Rest der if-Abfrage fortgesetzt werden.
Die if-Abfrage soll mehrmals aufrufbar sein, also immer mit der gleichen Timerzeit starten.
 
mihe7

mihe7

Das hast Du oben schon geschrieben. Was soll das ganze werden? Es muss ja einen Grund haben, warum Dir sleep() nicht reicht.
 
MoxxiManagarm

MoxxiManagarm

Du muss einen Thread/Timer was auch immer starten in der if, etwas was den Hauptthread weiterlaufen lässt. Dieser Thread zählt runter und wenn er 0 erreicht hat führt er deinen Rest aus und beendet sich selbst
 
J

JustNobody

Also da Du den Thread anhalten willst (er soll ja warten, bis die Zeit rum ist und dann weiter machen), dürfte Thread.sleep hier durchaus das Mittel der Wahl sein.
Da du es aber mehrfach "aufrufen" willst, wirst du hier wohl mehrere Threads haben.

Das Ganze gibt es dann aber auch schon relativ vorgefertigt in mehreren Klassen. Die meisten UI Frameworks haben entsprechende Implementierungen, in denen dann ein Timer dafür sorgt, dass zu gewissen Zeiten etwas auf dem UI Thread ausgeführt wird (z.B. javax.swing.Timer, https://docs.oracle.com/javase/tutorial/uiswing/misc/timer.html) aber es gibt natürlich auch im core Java einen Timer: java.util.Timer.

Wichtig ist: Da verwendest du dann (speziell bei den Lösungen der UI Frameworks) kein sleep mehr!
 
mihe7

mihe7

Vielleicht soll hier einfach nur ein Task scheduled werden, mir ist das noch nicht ganz klar.
 
MoxxiManagarm

MoxxiManagarm

Vielleicht soll hier einfach nur ein Task scheduled werden, mir ist das noch nicht ganz klar.
Ja das würde Sinn machen

Hier ein grobes Beispiel:
Java:
public class TimerTaskDemo extends TimerTask {
    private int id;

    public TimerTaskDemo(int id) {
        this.id = id;
    }

    @Override
    public void run() {
        System.out.println("Rückmeldung von Task " + id);
    }

    public static void main(String... args) {
        System.out.println("Diese Demo startet 10 Tasks, welche alls nach x Sekunden ausgeführt werden.");

        Timer timer = new Timer();
        Random r = new Random();

        for (int i = 0; i < 10; i++) {
            int s = r.nextInt(10) + 1;
            System.out.println("Der Task " + i + " wird sich nach " + s + " Sekunden zurückmelden...");
            timer.schedule(new TimerTaskDemo(i), s * 1000);
        }
    }
}
 
L

Lasnik

Danke für die Infos, hat mir geholfen.
Es ging nicht ein Code Snippet zu posten, da ich versuche ein Minecraft Mod zu erstellen, es war also alles ziemlich zusammenhängend.
Das ist auch der Grund, warum ich nicht Sleep() benutzen konnte, weil sonst ja alles für ein paar Sekunden einfriert.
 
Thema: 

Timer

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben