java - Conditional scheduling of task -
i need schedule task using java timer, following:
send request every 5 minutes (which receives status response)
if (status != end state), query status every 10 seconds next 2 minutes until reaches end state. if doesn't reach end state end of 2 minutes, sleep 3 minutes , resend request.
after 3 failed attempts (checking status 2 mins 10s interval), if end state not reached, revert 5 minute check interval
logic sending request , querying status has been taken care of. couldn't figure out scheduling tasks @ various intervals.
i know run() method should remember last state of task can re-schedule task appropriately.
i'm new timers. appreciated.
don't use timer
use scheduledexecutorservice
. more flexible.
first create instance many threads might need - running tasks concurrently:
final scheduledexecutorservice service = executors.newscheduledthreadpool(numthreads);
now, schedule task run @ specified interval, use scheduleatfixedrate
method schedule task. keep pointer returned future
:
final future<?> handle = service.scheduleatfixedrate(() -> {}, 0, 5, timeunit.minutes);
where () -> {}
java 8 lambda empty runnable
. can pass want in here.
now, want run hour. schedule task runs in hour , cancels previous 1 using handle
:
final future<?> cancellationhandle = service.schedule(() -> handle.cancel(false), 1, timeunit.hours);
again () -> handle.cancel(false)
java 8 lambda, time it's runnable
calls handle.cancel()
.
to honest, however, looks busy waiting model. java's wait()/notify()
methods thread
s wait other processes complete , woken instant happens.
Comments
Post a Comment