James Andrew
James Andrew

Reputation: 7243

Pass parameters to Timer Task (Java)

I have a timer task in a loop. I want to pass into the time task which number it is in a loop.

Is that possible?

My code:

...
int i = 0;
while (i < array.size){
    Timer timer = new Timer();
    timer.schedule(new RegrowCornAnimate(), 0, 1000);
i++
}
...

class RegrowCornAnimate extends TimerTask {
     public void run() {
//Do stuff
   }
}

How can I change it so I can use i in the TimerTask class? -as in each TimerTask will know which i it was created under/in/from.

Upvotes: 9

Views: 23656

Answers (4)

Asad Nauman
Asad Nauman

Reputation: 969

Please see an example at http://www.roseindia.net/java/task-scheduling.shtml. This example prints a number with each run.

Upvotes: -2

Filip Ros&#233;en
Filip Ros&#233;en

Reputation: 63832

Create a constructor in RegrowCornAnimate taking the parameters you'd like to use, then store them as members inside your class.

When RegrowCornAnimate.run is called read the values.

Upvotes: 4

ColinD
ColinD

Reputation: 110054

Give the RegrowCornAnimate class a constructor that takes an int and store that in a field. Pass i to the constructor when you create it.

Upvotes: 5

Alexander Pogrebnyak
Alexander Pogrebnyak

Reputation: 45586

class RegrowCornAnimate extends TimerTask {

    private final int serial;


    RegrowCornAnimate ( int serial )
    {
      this.serial = serial;
    }

    public void run() {
      //Do stuff
    }
}

...
int i = 0;
while (i < array.size){
    Timer timer = new Timer();
    timer.schedule(new RegrowCornAnimate( i ), 0, 1000);
    i++;
}
...

Upvotes: 24

Related Questions