public class MyTask extends TimerTask{
Closure onFinish
int count, repeat
public MyTask(Closure onFinish = {}, int repeat = 1){
this.onFinish = onFinish
this.repeat = repeat
this.count = 1
}
private void toDo(){
println "count-> ${count}"
}
private void checkFinished() {
if (count > repeat) { //this is the condition when you want to stop the task.
println "DONE-> before ${count}"
onFinish()
return
}
}
@Override
public void run() {
toDo()
count++
checkFinished()
}
}
public class MyScheduler {
public static void doIt( Closure then = {} ) {
Timer timer = new Timer()
MyTask myTask = new MyTask( repeat:3,
onFinish:{
timer.cancel() // stop the timer
then() // do the callback
})
int delayStartMs = 2000
int intervalMs = 1000
timer.schedule(myTask, delayStartMs, intervalMs)
}
}
MyScheduler.doIt( { println "#1 DONE" } )
MyScheduler.doIt( { println "#2 DONE" } )
Monday, January 7, 2013
Simple Timer & TimerTask
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment