Relative Zeit in Millisekunden
lima-city → Forum → Programmiersprachen → Java
after
akku
aktives warten
annahme
betrieb
code
gleichzeitige ereignisse
internet
machen
millisekunde
performance
ressource
run
sekunde
system
systemzeit
uhr
unterschiedlichen systemen
url
veranschaulichung
-
EDIT: Lösung gefunden (unten)
Hallo!
Um auf verschiedenen Systemen (Android, PC) gleichzeitige Ereignisse genau zu timen, brauche ich eine Funktion, die mir eine Zeit auf Millisekunden genau zurückgibt.
Wichtig ist vorallem, dass beide Uhren (auf den unterschiedlichen Systemen) zu einander nicht zu stark variieren.
Daher ist eine Echtzeituhr, die eventuell durch Anpassungen verändert wird ungeeignet: (Pseudocode zur Veranschaulichung)
Annahme: Beide System sind am Start genau synchronisiert.
System1:
Ereignis_um=Systemzeit + 5s while(Systemzeit <= Ereignis_um); // Warte doSomething(); // Nach 5 Sekunden ausführen
System2:
Ereignis_um=Systemzeit + 5s while(Systemzeit <= Ereignis_um); // Im Hintergrund verändert nun das System z.B. durch einen Synch zu einem Internet-Zeitserver die Systemzeit doSomething(); // wird zu einer anderen Zeit ausgeführt.
Unter Android kenne ich SystemClock.uptimeMillis(). Diese wird nicht durch irgendwelche Hintergrundprozesse beeinflusst. Kennt ihr so etwas, das unter Java generell gültig ist?
Vielen Dank und Beste Grüße
Stefan
EDIT:
System.nanoTime() ist genau das, was ich gesucht habe.
Beitrag zuletzt geändert: 30.1.2014 11:30:37 von aklasse -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Also, nur so: Das was du da machst bezeichnet man auch als "aktives Warten". Das braucht Ressourcen und Performance, und kann sowohl das System, auf einem Handy auch den Akku beeinflussen, da die CPU in der Zeit was macht.
Mein Vorschlag wäre, dir mal hiermit was zusammen zu basteln: http://docs.oracle.com/javase/6/docs/api/java/util/Timer.html
Beispiele dafür findest du hier: https://stackoverflow.com/questions/2258066/java-run-a-function-after-a-specific-number-of-seconds
Dadurch wird in 5Sek ein Event getriggert, welches dann abgearbeitet wird. Damit hast du kein aktives Warten mehr.
Nur so als Hinweis.
Liebe Grüße -
Danke für die Info, das war aber nur Pseudocode um das System zu veranschaulichen. Umgesetzt wird es natürlich nicht im Polling-Betrieb.
Das ganze wird Teil eines größeren Synchronisations-Protokolls.
Beste Grüße
Stefan -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage