In letzter Zeit habe ich Schleifen mit großen Zahlen zum Ausdrucken verwendet Hello World
:
int counter = 0;
while(true) {
//loop for ~5 seconds
for(int i = 0; i < 2147483647 ; i++) {
//another loop because it's 2012 and PCs have gotten considerably faster :)
for(int j = 0; j < 2147483647 ; j++){ ... }
}
System.out.println(counter + ". Hello World!");
counter++;
}
Ich verstehe, dass dies eine sehr dumme Methode ist, aber ich habe noch nie eine Timer-Bibliothek in Java verwendet. Wie würde man das Obige ändern, um alle 3 Sekunden zu drucken?
Antworten:
Sie können auch einen Blick auf nehmen
Timer
undTimerTask
Klassen , die Sie Ihre Aufgabe verwenden können , planen alle laufenn
Sekunden.Sie benötigen eine Klasse,
TimerTask
die diepublic void run()
Methode erweitert und überschreibt. Diese wird jedes Mal ausgeführt, wenn Sie eine Instanz dieser Klasse an dietimer.schedule()
Methode übergeben.Hier ist ein Beispiel, das
Hello World
alle 5 Sekunden gedruckt wird: -quelle
schedule
Methode nach der angegebenen Verzögerung einmal ausgeführt wird. Der 3-Parameterschedule
oderscheduleAtFixedRate
müsste verwendet werden.ExecutorService
für diese Aufgaben zu verwenden. Das ist wirklich eine große Verbesserung gegenüber der herkömmlichen Thread-API. Ich habe es zum Zeitpunkt der Beantwortung einfach nicht benutzt.Timer timer = new Timer(true);
solltetrue
als Deamon eingestellt werden. Es sei denn, Sie möchten, dass der Timer nach dem Schließen der Anwendung noch läuft.Wenn Sie eine regelmäßige Aufgabe ausführen möchten, verwenden Sie a
ScheduledExecutorService
. Speziell ScheduledExecutorService.scheduleAtFixedRateDer Code:
quelle
TimerTask
Variante endlich übertroffen hat . Interessanterweise habe ich festgestellt, dass die akzeptierte Antwort tatsächlich nicht korrekt ist: \ Das Alter der beiden APIsScheduledExecutorService
ist einfach intuitiver deklarativ. Die VerwendungTimeUnit
als Parameter macht viel deutlicher, was passiert. Vorbei sind die Tage des Codes wie5*60*1000 // 5 minutes
.Runnable helloRunnable = () -> { /*code */ };
was noch schöner ist;)Versuchen Sie Folgendes:
Dieser Code wird alle 5000 Millisekunden ( 5 Sekunden) auf der Konsole Hello World gedruckt . Weitere Informationen finden Sie unter https://docs.oracle.com/javase/1.5.0/docs/api/java/util/Timer.html
quelle
Ich finde es mit einem Timer heraus, hoffe es hilft. Ich habe einen Timer von
java.util.Timer
undTimerTask
aus demselben Paket verwendet. Siehe unten:quelle
Sie können
Thread.sleep(3000)
inside for loop verwenden.Hinweis: Dies erfordert einen
try/catch
Block.quelle
Endlosschleife erstellt Anzeigenplaner Task ist konfiguriert.
quelle
Am einfachsten wäre es, den Haupt-Thread auf 3000 Millisekunden (3 Sekunden) einzustellen:
Dadurch wird der Thread mindestens X Millisekunden angehalten. Der Thread könnte länger schlafen, aber das liegt an der JVM. Das einzige, was garantiert ist, ist, dass der Thread mindestens diese Millisekunden schläft. Schauen Sie sich das
Thread#sleep
Dokument an:quelle
Verwendung
java.util.Timer
undTimer#schedule(TimerTask,delay,period)
Methode werden Ihnen helfen.quelle
Dies ist die einfache Möglichkeit, Thread in Java zu verwenden:
quelle
Was er sagte. Sie können die Ausnahmen behandeln, wie Sie möchten, aber Thread.sleep (Millisekunden); ist der beste Weg zu nehmen.
quelle
Hier ist eine weitere einfache Möglichkeit, die Runnable-Schnittstelle in Thread Constructor zu verwenden
quelle
Hinzufügen
Thread.sleep
quelle
Für kleine Anwendungen ist es in Ordnung, Timer und TimerTask wie von Rohit erwähnt zu verwenden, aber in Webanwendungen würde ich Quartz Scheduler verwenden, um Jobs zu planen und solche periodischen Jobs auszuführen.
Siehe Tutorials zur Quarzplanung.
quelle
quelle