/**
   * * Ritorna un elemento da analizzare oppure -1 se non ve ne è uno disponibie entro 3 secondi
   * dalla richiesta
   *
   * @return
   * @throws RemoteException
   */
  @Override
  public int getJob() throws RemoteException {
    if (LOG_VERBOSE) {
      System.out.println("Un Assistant richiede un lavoro... " + elementToCalculateQueue.size());
    }

    if (USE_SLEEP) {
      try {
        Thread.sleep(3000);
      } catch (InterruptedException ex) {
      }
    }

    int element = elementToCalculateQueue.poll(2, TimeUnit.SECONDS);

    if (element == Integer.MIN_VALUE) {
      return -1;
    }

    if (LOG_VERBOSE) {
      System.out.println("Assegno all'Assistant il calcolo di: " + element);
    }
    return element;
  }
 /**
  * * Permette di ottenere un massimo comun divisore di un numero passato in precedenza. Il metodo
  * è bloccante, il thread rimane in attesa fino a quando non è presente un numero
  *
  * @return l'mcd calcolato
  */
 public int getElementToAnalyze() {
   int element = elementToAnalyzeQueue.take();
   return element;
 }
 /**
  * * Richiede il calcolo del massimo comun divisore per l'elemento passato come parametro
  *
  * @param element
  */
 public void calculateDivisor(int element) {
   elementToCalculateQueue.add(element);
 }
 /**
  * * Permette a gli assistant di ritornare l'mcd di un numero elaborato
  *
  * @param divisor
  * @throws RemoteException
  */
 @Override
 public void sendResult(int divisor) throws RemoteException {
   elementToAnalyzeQueue.add(divisor);
 }