ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
517
517
EMPFEHLEN
-
Hallo
Ich brauch Rat, ich habe die Aufgabe immer zur vollen Stunde eine Aktion zu starten.
Ich hab auch "Timer" in Java gefudnen, der jedoch kann nur "Warte [x]ms, dann tue".
Ich brauch jedoch "Prüfe ob [X:00Uhr] ist, wenn ja dann tue".
Wie krieg ich das hin?
Gruss
NobodyGeändert von Nobody23 (26.11.08 um 15:32 Uhr)
-
Das du da noch nicht selber drauf gekommen bist....
Man könnte ja im Ersten *tue* das tun, was du wolltest..
also:
Warte [x]ms, dann tue:
-- Prüfe ob [X:00Uhr] ist, wenn ja dann tue
-
26.11.08 16:24 #3Code java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
import java.util.Date; import javax.swing.JFrame; import javax.swing.JOptionPane; /* extends Thread brauchst du damit du Thread.sleep() aufrufen kannst. Dadruch wartet der Prozess ohne die CPU zubeanspruchen*/ public class Anwendung extends Thread { public static void main(String[] args) { // Try catch fängt fehler ab und gibt diese (in diesem Fall) aus try { /* Console ausgabe das das Programm gestartet wurde */ System.out.println("Start"); /* Counter = die Zeit wie lange der Thread laufen soll (in Sekunden) */ int counter = 60 * 60 * 24; /* Diese Schleife läuft so lange wie der Counter größer als 0 ist */ while (counter > 0) { // Hier wird ein neues Datum angelegt mit dem aktuellem Datum // (incl uhrzeit) Date d = new Date(System.currentTimeMillis()); // Hier wird geprüft ob minuten und Sekunden auf 0 stehen if (d.getMinutes() == 0 && d.getSeconds() == 0) { // Sobald du in dieser if bedingung bist, kannst du deine // Action aufrufen, in diesem Beispeil öffnet sich ein // kleines Fenster JOptionPane.showMessageDialog(new JFrame(), "*blub*"); } // Hier lässt du den Thread für 1 Sekunde warten Thread.sleep(1000); // Hier wird der Zähler manipuliert (zählt runter) counter--; } // Hier die Ausgabe das das Programm beendet wurde. System.out.println("Stop"); } catch (Exception e) { e.printStackTrace(); } } }
Wenn mein Beitrag dir geholfen hat, würde ich mich sehr über eine positive Bewertung oder ein Danke freuen
Gruß Johannes
::: Homepage :::
-
26.11.08 17:32 #4
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo,
ging auch so:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
/** * */ package de.tutorials; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.Timer; import java.util.TimerTask; import java.util.concurrent.TimeUnit; /** * @author Thomas.Darimont * */ public class EveryHourExample { /** * @param args */ public static void main(String[] args) { Calendar calendar = new GregorianCalendar(); long millisToNextFullHour = TimeUnit.MINUTES.toMillis(calendar .getMaximum(Calendar.MINUTE) - calendar.get(Calendar.MINUTE) ) + TimeUnit.SECONDS.toMillis(calendar .getMaximum(calendar.SECOND) - calendar.get(Calendar.SECOND) + 1L); new Timer().scheduleAtFixedRate(new TimerTask() { @Override public void run() { System.out.println("Ding dong: " + new Date()); } }, millisToNextFullHour, TimeUnit.HOURS.toMillis(1L)); } }
Mit Quartz geht das noch ein wenig einfacher:
http://www.opensymphony.com/quartz/
Gruß Tom
-
Hallo
das obige Beispiel ist nach zweiten Hinsehen vermutlich nicht sehr zuverlässig, zumindest kann man es noch sehr optimieren, damit nicht ständig der Timer (hier eigetnlich Thread) aufwacht.
Also ich würde die jetzige Zeit nehmen und die nächste volle Stunde mittels GregorianCalender ermitteln. dann würde ich einen java.util.Timer und einen TimerTask (der dann jede Stunde was machen soll) erstellen, wobei der Timer mit dem ersten auftreten des Ereignisses und dem delay einer Stunde und dem TimerTask gefüttert wird (methode: timer.scheduleAtFixedRate(timerTask,calen.getTime(), 60*60*1000); und fertig sei dei Laube.
Optimerit in sofern, dass der TimerTask vom Timer tatsächlich nur einmal die Stunde erwacht.
haha Tom ist mir gewissermaßen zuvorgekommen, mit obigen Beispiel meine ich natürlich das von Johannes7146
Geändert von takidoso (26.11.08 um 17:51 Uhr)
Ähnliche Themen
-
Oracle SQL - Datenausgabe zur vollen Stunde
Von sqlrosaki im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 06.11.08, 10:12 -
Zeit bis zur vollen stunde
Von Ichbinalex im Forum Visual Basic 6.0Antworten: 2Letzter Beitrag: 26.04.08, 07:40 -
Vollen Pfad ausgeben
Von m4nueL im Forum PHPAntworten: 16Letzter Beitrag: 04.12.04, 11:17 -
vollen ordner löschen
Von deinertsche im Forum PHPAntworten: 2Letzter Beitrag: 21.03.03, 10:17 -
vollen Eintrag erzwingen
Von z0oL im Forum PHPAntworten: 1Letzter Beitrag: 20.06.02, 22:23





Zitieren

Login





