title: Timer already cancelled
body: <p>I have two timers to manage input(en-queue) and output (dequeue) from a FIFO queue but I keep getting a exception for the dequeueing java.lang.IllegalStateException: Timer already cancelled. I can't place a stop to debug line where the error is claimed to occur line 83. I don't know what I'm missing so any help would be appreciated.</p>
  
  <pre><code>import java.util.Random;
  import java.util.Timer;
  import java.util.TimerTask;
  
  /**
   * RunSim
   */
  public class RunSim {
      private double arrivalRate = 600;
      private double y;
      private Timer t;
      private Timer t2;
      private Queue fifoQueue;
      private long xy;
      private long fact = 10;
      private int count;
      private int pId;
  
      public RunSim() {
          Random r = new Random();
          long n = System.currentTimeMillis();
          r.setSeed(n);
          double i = r.nextDouble();
          y = ((1 / arrivalRate) * (Math.log(i)));
          xy = (long) y;
          t = new Timer();
          t2 = new Timer();
          fifoQueue = new Queue();
          count = 0;
          pId = 0;
  
      }
  
      public static void main() {
          RunSim rs = new RunSim();
          rs.start();
      }
  
      public void start() {
          class sendPacket extends TimerTask {
              public void run() {
                  Packet p = new Packet();
                  p.setId(pId);
                  fifoQueue.insert(p);
                  p.setArrivalTime();
                  System.out.println("ID: " + p.getId() + " Arrival Time: "
                          + p.getArrivalTime() / fact);
                  pId++;
  
              }
          }
  
          class removePacket extends TimerTask {
              public void run() {
                  fifoQueue.first().setDepartureTime();
                  System.out.println("ID: " + fifoQueue.first().getId()
                          + " Departure Time: "
                          + fifoQueue.first().getDepartureTime() / fact);
                  fifoQueue.remove();
              }
          }
  
          while (count &lt; 1000) {
              long v = fact * (1 + Math.abs(xy));
              t.schedule(new sendPacket(), 0, v);
              count++;
              t2.schedule(new removePacket(), 5, 5);
  
          }
      }
  }
  </code></pre>