ERLEDIGT
JA
JA
ANTWORTEN
5
5
ZUGRIFFE
1245
1245
EMPFEHLEN
-
28.10.05 15:21 #1
- Registriert seit
- Jun 2005
- Beiträge
- 246
Hi,
ich möchte später mal jede volle Stunde meine Datenbank checken und gegebenenfalls ein Update ausführe. Momentan bin ich noch am Testen und Üben ob es überhaupt funktioniert.
Ich habe mir dafür folgende Methode ausgedacht:
Code :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
/*Dekl. in der Klasse */ public int wakeHour = 0; public int wakeMinute = 0; public final int wakeSecond = 30; public void arbeitszeitcheck() { Thread sanduhr = new Thread() { public void run() { boolean checked = false; boolean schleife = true; while (schleife) { Calendar cal = new GregorianCalendar(); wakeHour = cal.get(Calendar.HOUR_OF_DAY); wakeMinute = cal.get(Calendar.MINUTE); cal.setTime(new Date()); if(cal.get(Calendar.HOUR_OF_DAY) == wakeHour && cal.get(Calendar.MINUTE) == wakeMinute && cal.get(Calendar.SECOND) == wakeSecond) { if (!checked) { System.out.println("ES GEHT, JUHU DA WAHNSINN !!"); checked = true; } } } }; sanduhr.start(); pack(); }
Zum Prüfen ob's überhaupt geht, wollte ich jede Minute eine Consolen-Meldung ausgeben.
Den Schalter checked setzte ich damit die Ausgabe nur 1 x kommt. Zuvor hatte ich immer das Problem, wenn die If-Bedigung mit der Zeit übereinstimmt..... -> Es eine
Endlos-Ausgabe in der Console gab.
Jetzt jedoch habe ich das Problem, dass es nur in der 1. Minute klappt, danach komme ich nicht mehr in meine if-Schleife (!checked) was ja logisch ist. Ich habe auch schon versucht unter checked = true noch einen schalter = false für die while-Schleife einzubauen. und dann über sanduhr.start() diesen Schalter wieder auf true zu setzen.
Jedoch wird die while-Schleife nicht mehr aufgerufen.
Weiß vielleicht jemand wo noch der Wurm drin ist
Danke
-
Hi!
Ich hab zwar noch nie mit Threads programmiert, aber was würde gegen einen Timer sprechen? Die Klasse wäre in der Java API schon vorhanden, und würde genau deinen Zwecken, wenn ich sie richtig verstanden hab
, genügen, oder? Sollte doch reichen auf einen "Tick" alle Stunden zu reagieren, und dann mit dem Abchecken auf Änderungen zu beginnen.
Aber wie gesagt, ich hab noch nicht viel mit Threads zu tun gehabt, und lieg wahrscheinlich daneben
Gruß
TOMalles Gute kommt von ...
-
28.10.05 18:52 #3
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo!
Siehe auch hier:
http://www.tutorials.de/tutorials225750.html
Gruss TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
02.11.05 09:24 #4
- Registriert seit
- Jun 2005
- Beiträge
- 246
Hi Thomas,
dein Link klingt interessant, jedoch habe ich ein wenig Probleme wie ich das auf eine Volle Stunde umbasteln soll. Wäre nett wenn Du mir da nochmal helfen könntest.
Für was steht denn zum Beispiel bei INTERVAL_ONE_WEEK die 1000
-
02.11.05 10:50 #5
- Registriert seit
- Jun 2005
- Beiträge
- 246
Hi,
ich habe jetzt mein Problem gelöst. Vielleicht etwas umständlich. Wäre sicher schöner gegangen aber ich bin zufrieden. Es läuft wenigstens. Vielleicht ist es dem einen oder anderem mal eine Hilfe.
Grüße
Code :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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
import java.text.SimpleDateFormat; import java.util.Date; import java.util.Timer; import java.util.TimerTask; import java.util.GregorianCalendar; import java.util.Calendar; public class TimerTaskExample { public static void main(String[] args) throws Exception{ Timer timer = new Timer(); //Jede Minute final long INTERVAL_ONE_WEEK = 60*1000; int wakeHour = 0; int wakeMinute = 0; int wakeDay = 0; int wakeMonth = 0; int wakeYear = 0; String datumzusammensetzen = null; Calendar cal = new GregorianCalendar(); wakeMinute = cal.get(Calendar.MINUTE); wakeHour = cal.get(Calendar.HOUR_OF_DAY); wakeDay = cal.get(Calendar.DAY_OF_MONTH); wakeMonth = cal.get(Calendar.MONTH); // zählt Monat von 0 bis 11 wakeMonth = wakeMonth + 1; wakeYear = cal.get(Calendar.YEAR); System.out.println(wakeMinute + " Das sind die Minuten"); System.out.println(wakeHour + " Das sind die Stunden"); System.out.println(wakeDay + " Das ist der Tag"); System.out.println(wakeMonth + " Das ist der Monat"); System.out.println(wakeYear + " Das ist das Jahr"); datumzusammensetzen = Integer.toString(wakeDay) + "." + Integer.toString(wakeMonth) + "." + Integer.toString(wakeYear) + " " +Integer.toString(wakeHour) + ":" + Integer.toString(wakeMinute); System.out.println(datumzusammensetzen + " zusammengesetzt"); Date startTime = new SimpleDateFormat("dd.MM.yyyy HH:mm").parse(datumzusammensetzen); System.out.println(startTime); timer.scheduleAtFixedRate(new TimerTask() { int i= 0; public void run() { i++; System.out.println(i +". Minute"); } }, startTime, INTERVAL_ONE_WEEK); } }
-
02.11.05 12:15 #6
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo!
Die 1000 steht fuer 1000 Millisekunden...
Gruss TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
Ähnliche Themen
-
Applet - während Thread.sleep eine Aktion ausführen
Von N302OO7 im Forum JavaAntworten: 8Letzter Beitrag: 21.06.09, 21:12 -
Code jede Stunde ausführen?
Von no4na im Forum C/C++Antworten: 5Letzter Beitrag: 13.02.08, 07:32 -
Jede Stunde aktualisieren
Von kerian im Forum CGI, Perl, Python, Ruby, Power ShellAntworten: 2Letzter Beitrag: 14.02.04, 13:30 -
automatische URL öffnen - jede stunde
Von mevo im Forum Internet, DSL & FlatrateAntworten: 6Letzter Beitrag: 26.01.04, 13:48 -
selectfeld "f[f_select]" soll bei änderung ne aktion ausführen
Von Mr. FISHMAN im Forum Javascript & AjaxAntworten: 1Letzter Beitrag: 25.10.03, 19:38





Zitieren

Login





