code: @SuppressWarnings("static-access")
      public void play(URI[] uris, RTC[] rtc, Parameters params) throws MsControlException {        
          if (rtc != null) {
              verifyRTC(rtc);
          }
          
          this.checkURI(uris);
          PlayTask task = new PlayTask(uris, rtc, params);
          
          //user calls play during the current work?
          if (fsm.getState().getName().equals(STATE_IDLE)) {
              playList.offer(task);
          } else {
              //no specific behaviour?
              if (params == null) {
                  throw new MsControlException("Busy now: state=" + fsm.getState());
              }
              
              Value behaviour = (Value) params.get(Player.BEHAVIOUR_IF_BUSY);
              playList.offer(task);
  
              if (Player.FAIL_IF_BUSY.equals(behaviour)) {
                  //queue task and send stop
                  throw new MsControlException("Busy now");
              }
              
              if (Player.STOP_IF_BUSY.equals(behaviour)) {
                  //queue task and send stop
                  try {
                      fsm.signal(SIGNAL_STOP);
                  } catch (UnknownTransitionException e) {
                  }
              }
          }
  
          new Thread(new Starter()).start();
          
          lock.lock();
          try {
              try {
                  started.await();
              } catch (InterruptedException e) {
              }
          } finally {
              lock.unlock();
          }        
      }
docs: Player methods