Thread résultat

Résolu
Bonjour,

je voudrais savoir s'il y a un moyen de récupérer le résultat d'un thread puisque la méthode run ne peut prendre aucun parametre et ne peut en retourner.

ex: récupérer la somme de 2 nombres pour ensuite le traiter dans le main ou dans un autre thread

Merci pour votre aide.

2 réponses

  1. Merci bcp pour ton aide, pour la résolution de mon problème j'ai juste utilisé une class intermédiaire pour contenir le résultat de mon thread.

    Merci
    1. Modérateur
      Tu peux faire comme ceci par exemple :

      public class ThreadWithResult<E> extends Thread
      {
          private E result; // null par défaut
          private boolean known; // false par défaut
          
          public E getResult() throws IllegalStateException
          {
              if (known)
                  return result;
              else
                  throw new IllegalStateException("Result is not kwnown.");
          }
          
          public void setResult(E result)
          {
              known = true;
              this.result = result;
          }
          
          public boolean isKnown()
          {
              return known;
          }
      }
      
      public class Test
      {    
          public static void main(String[] args) throws InterruptedException
          {
              ThreadWithResult<Integer> t = new ThreadWithResult<Integer>()
              {
                  @Override
                  public void run()
                  {
                      setResult(1+2);
                  }
              };
              
              t.start();
              t.join(); // attend que le run soit terminé
              
              System.out.println(t.getResult());
          }
      }