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

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   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
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