/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
java.util.TimerTask DST problem
Fra : Dahl


Dato : 05-08-02 16:20

HEjsa jeg har postet nedenstående spørgsmål på suns board, men ikke fået
nogen svar. Derfor prøver jeg her.

I'm using java.util.Timer to execute a java.util.TimerTask at a fixed rate
(5 min). It works fine until I simulate daylight saving time.

When I increment the computers time by 1 hour, the TimerTask is executed
many times right after each other (probably 60/5 times).

When the time is set back one hour the task is executed after 65 minutes.

I want the task to be executed every 5 minutes, even if the computer time is
changed due to DST.

Is that possible?

Thanks
Dahl




 
 
Dahl (05-08-2002)
Kommentar
Fra : Dahl


Dato : 05-08-02 16:26

Sorry about the danish in the beginning of the post. Please ignore the first
two lines (o:

"Dahl" <NOSPAMjimmichr@hotmail.comSPAMNO> wrote in message
news:aim52n$2lvs$1@news.cybercity.dk...
> HEjsa jeg har postet nedenstående spørgsmål på suns board, men ikke fået
> nogen svar. Derfor prøver jeg her.
>
> I'm using java.util.Timer to execute a java.util.TimerTask at a fixed rate
> (5 min). It works fine until I simulate daylight saving time.
>
> When I increment the computers time by 1 hour, the TimerTask is executed
> many times right after each other (probably 60/5 times).
>
> When the time is set back one hour the task is executed after 65 minutes.
>
> I want the task to be executed every 5 minutes, even if the computer time
is
> changed due to DST.
>
> Is that possible?
>
> Thanks
> Dahl
>
>
>



Skinnybrown (14-12-2002)
Kommentar
Fra : Skinnybrown


Dato : 14-12-02 11:05

I don't know if there is a better way of doing it, but could you not stop
the TimerTask, adjust the time, then re-start it?

Skinnybrown

-----

What I lack in skill, I make up for in inability


"Dahl" <NOSPAMjimmichr@hotmail.comSPAMNO> wrote in message
news:aim5di$2mo5$1@news.cybercity.dk...
> Sorry about the danish in the beginning of the post. Please ignore the
first
> two lines (o:
>
> "Dahl" <NOSPAMjimmichr@hotmail.comSPAMNO> wrote in message
> news:aim52n$2lvs$1@news.cybercity.dk...
> > HEjsa jeg har postet nedenstående spørgsmål på suns board, men ikke fået
> > nogen svar. Derfor prøver jeg her.
> >
> > I'm using java.util.Timer to execute a java.util.TimerTask at a fixed
rate
> > (5 min). It works fine until I simulate daylight saving time.
> >
> > When I increment the computers time by 1 hour, the TimerTask is executed
> > many times right after each other (probably 60/5 times).
> >
> > When the time is set back one hour the task is executed after 65
minutes.
> >
> > I want the task to be executed every 5 minutes, even if the computer
time
> is
> > changed due to DST.
> >
> > Is that possible?
> >
> > Thanks
> > Dahl
> >
> >
> >
>
>



Richard Flamsholt (06-08-2002)
Kommentar
Fra : Richard Flamsholt


Dato : 06-08-02 21:27

"Dahl" <NOSPAMjimmichr@hotmail.comSPAMNO> skrev:
>I want the task to be executed every 5 minutes, even if the computer time is
>changed due to DST.

Brug Timer.schedule() i stedet for Timer.scheduleAtFixedRate():

Timer.schedule(task, 0, n) prøvet at sover n msec mellem hvert kald til
task. Brug den hvis det ikke er så vigtigt at kald nr. 100 bliver udført
præcist efter 100*n msec, men godt må flyde lidt.

Timer.scheduleAtFixedRate(task, 0, n) prøver at sørge for, at task
indenfor en given tidsperiode t vil blive kaldt t/n gange. Hvis uret
stilles en time frem vil den altså kalde task 1time/n gange ekstra for
at "holde trit".

Jeg opdagede selv forskellen på et embedded java-projekt, hvor tiden ved
opstart blev stillet frem fra år 1980: Timer.scheduleAtFixedRate() blev
rødglødende af at indhente 22 års forsømte minutlige task-kald!

--
Richard Flamsholt
richard@flamsholt.dk - www.richard.flamsholt.dk

Dahl (07-08-2002)
Kommentar
Fra : Dahl


Dato : 07-08-02 19:00

Ok det lyder som om jeg godt kan bruge Timer.schedule. Jeg har ingen
problemer med flyderi (o:

Hvordan vil den opføre sig hvis man sætter uret tilbage? Vil der også her
reelt kun gå det interval den er sat til?

Jeg læste lige lidt af java 1.3 doc'en og undrede mig over at der til
shedule() methoden står

"Fixed-delay execution is appropriate for recurring activities that require
"smoothness." In other words, it is appropriate for activities where it is
more important to keep the frequency accurate in the short run than in the
long run."

og til scheduleAtFixedRate() står

"Fixed-rate execution is appropriate for recurring activities that are
sensitive to absolute time, such as ringing a chime every hour on the hour,
or running scheduled maintenance every day at a particular time."

mon ikke de mener "Non-Fixed-Rate execution..." mht.. shedule()
dokumentationen?

Dahl

"Richard Flamsholt" <richard@flamsholt.dk> wrote in message
news:mua0lu83sraohc8oss3q7hh28khvl07dpo@news.sunsite.dk...
> "Dahl" <NOSPAMjimmichr@hotmail.comSPAMNO> skrev:
> >I want the task to be executed every 5 minutes, even if the computer time
is
> >changed due to DST.
>
> Brug Timer.schedule() i stedet for Timer.scheduleAtFixedRate():
>
> Timer.schedule(task, 0, n) prøvet at sover n msec mellem hvert kald til
> task. Brug den hvis det ikke er så vigtigt at kald nr. 100 bliver udført
> præcist efter 100*n msec, men godt må flyde lidt.
>
> Timer.scheduleAtFixedRate(task, 0, n) prøver at sørge for, at task
> indenfor en given tidsperiode t vil blive kaldt t/n gange. Hvis uret
> stilles en time frem vil den altså kalde task 1time/n gange ekstra for
> at "holde trit".
>
> Jeg opdagede selv forskellen på et embedded java-projekt, hvor tiden ved
> opstart blev stillet frem fra år 1980: Timer.scheduleAtFixedRate() blev
> rødglødende af at indhente 22 års forsømte minutlige task-kald!
>
> --
> Richard Flamsholt
> richard@flamsholt.dk - www.richard.flamsholt.dk



Richard Flamsholt (07-08-2002)
Kommentar
Fra : Richard Flamsholt


Dato : 07-08-02 22:24

"Dahl" <NOSPAMjimmichr@hotmail.comSPAMNO> skrev:
>Jeg læste lige lidt af java 1.3 doc'en og undrede mig over at der til
>shedule() methoden står
>
>"Fixed-delay execution is appropriate for recurring activities [...]
>
>mon ikke de mener "Non-Fixed-Rate execution..." mht.. shedule()
>dokumentationen?

De mener nok (og jeg er enig), at det er nemmere at forstå forskellen på
metodernes opførsler hvis de beskrives som "fixed-delay vs fixed-rate",
fremfor de mere knudrede "non-fixed-rate vs fixed-rate".

Fixed-delay beskriver jo opførslen meget godt: der ventes en fast tid
mellem hvert kald.

--
Richard Flamsholt
richard@flamsholt.dk - www.richard.flamsholt.dk

Dahl (08-08-2002)
Kommentar
Fra : Dahl


Dato : 08-08-02 18:51

ja enig.

"Richard Flamsholt" <richard@flamsholt.dk> wrote in message
news:1i33lusdun9pon9elka5ci9h930feb51a8@news.sunsite.dk...
> "Dahl" <NOSPAMjimmichr@hotmail.comSPAMNO> skrev:
> >Jeg læste lige lidt af java 1.3 doc'en og undrede mig over at der til
> >shedule() methoden står
> >
> >"Fixed-delay execution is appropriate for recurring activities [...]
> >
> >mon ikke de mener "Non-Fixed-Rate execution..." mht.. shedule()
> >dokumentationen?
>
> De mener nok (og jeg er enig), at det er nemmere at forstå forskellen på
> metodernes opførsler hvis de beskrives som "fixed-delay vs fixed-rate",
> fremfor de mere knudrede "non-fixed-rate vs fixed-rate".
>
> Fixed-delay beskriver jo opførslen meget godt: der ventes en fast tid
> mellem hvert kald.
>
> --
> Richard Flamsholt
> richard@flamsholt.dk - www.richard.flamsholt.dk



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste