code: public void addAction(ModelAction action, ModelActionListener listener)
      {
          
          synchronized(actionQueue) {
              this.actionQueue.add(new ModelActionEntry(action, listener));
          }
          
          wakeUp();
          
      }
docs: Adds an action to the processing queue
  
  @param action the action to execute
  @param listener an optional listener object to be notified of the action end state