CS 4773 Object Oriented Systems
DelayThreadMulti.java

import java.util.*;

public class DelayThreadMulti extends DelayThread {

   private Vector cbs;
   

   public DelayThreadMulti(int sleep_time, DelayCallBack cb) {
      super(sleep_time,cb);
      cbs = new Vector();
      cbs.addElement(cb);
   }

   public void AddCallBack(DelayCallBack cb) {
      if (!cbs.contains(cb))
         cbs.addElement(cb);
   }

   public void RemoveEntry(DelayCallBack cb) {
      cbs.removeElement(cb);
      if (cbs.size() == 0)
         PauseDelay();
   }

   public void ContinueDelay(DelayCallBack cb) {
      AddCallBack(cb);
      resume();
   }

    public int GetDelay() {
       return sleep_time;
    }

   public void run() {
      while (!done_flag) {
         try {
            sleep(sleep_time);
         }
         catch (InterruptedException e) {}
         if (cbs != null)
            for (int i=0;i