Thread résultat

Résolu
ben -  
 ben -
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. KX Messages postés 19031 Statut Modérateur 3 020
     
    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());
        }
    }
    0
  2. ben
     
    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
    0