CS 4773 Object Oriented Systems
DelayThread.java

public class DelayThread extends Thread {

   protected DelayCallBack cb;
   protected boolean done_flag = false;
   protected int sleep_time = 0;
   protected boolean suspend_flag = false;
   

   public DelayThread(int sleep_time, DelayCallBack cb) {
      this.cb = cb;
      this.sleep_time = sleep_time;
      done_flag = false;
      start();
   }

   public void kill() {
      done_flag = true;
      resume();
   }

   public void PauseDelay() {
      suspend_flag = true;
   }

   public void ContinueDelay() {
      resume();
   }

   public void run() {
      while (!done_flag) {
         try {
            sleep(sleep_time);
         }
         catch (InterruptedException e) {}
         cb.DelayNotification();
         if (suspend_flag)
            suspend();
         suspend_flag = false;
      }
   }

}