Paste #7982

package CustomTimer.TimerTypes.FullNames.TaskTimers;

import CustomTimer.Util.ExonTimerStorer;
import CustomTimer.Util.Interfaces.CustomTimer;
import CustomTimer.Util.Interfaces.ExonRunTask;
import java.util.Timer;
import java.util.TimerTask;

public class ExonTaskTimer
  implements CustomTimer
{
  protected int timerid;
  protected long tickTime;
  protected Timer Timer = null;
  protected ExonRunTask taskToRun;
  
  public ExonTaskTimer(ExonRunTask taskToRun, long tickTime)
  {
    if ((taskToRun != null) && (tickTime > 0L))
    {
      this.timerid = ((int)System.currentTimeMillis() / 2);
      
      this.tickTime = tickTime;
      this.taskToRun = taskToRun;
      
      ExonTimerStorer.getInstance().add(this, this.timerid);
      startTimer();
    }
  }
  
  public int getId()
  {
    return this.timerid;
  }
  
  public ExonRunTask getRunTask()
  {
    return this.taskToRun;
  }
  
  public void startTimer()
  {
    Timer T = new Timer();
    T.schedule(new TimerTask()
    {
      public void run()
      {
        ExonTaskTimer.this.taskToRun.run();
      }
    }, this.tickTime);
    
    this.Timer = T;
  }
  
  public void stop()
  {
    if (this.Timer != null) {
      this.Timer.cancel();
    }
  }
}
Raw