Les threads Java

castorr Messages postés 3 Date d'inscription samedi 25 avril 2009 Statut Membre Dernière intervention 26 avril 2009 - 25 avril 2009 à 23:46
Cornellus1985 Messages postés 22 Date d'inscription dimanche 26 avril 2009 Statut Membre Dernière intervention 7 juillet 2009 - 26 avril 2009 à 20:17
J'ai un problème :
je lance un thread, il compte et arrivé  à une certaine valeur il effectue une action.
Mais comment faire pour récupérer  "la valeur"  (qui est ici en l'occurrence un entier)  dans la classe principale et non pas dans le thread.

Moi je veut la "valeur":

        Runnable TestThread = new TestThread();
        Thread t = new Thread(TestThread);
        t.start();
        if(t=="valeur"){action();}                      // IMPOSSIBLE DE COMPARER UN ENTIER AVEC UN OBJECT

Comment effectuer mon action à un instant X dans ma classe alors ?

6 réponses

Utilisateur anonyme
26 avril 2009 à 01:59
Salut,


Mais il compte quoi  (des moutons pour s'endormir) et dans quoi  un byte, un int , un long et qui a quel nom?

Cordialement,

...\ Dan /...
0
uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 9
26 avril 2009 à 10:18
SI l'action est un affichage graphique, nous pouvons utiliser la classe SwingWorker. Voici un bon tutoriel sur "SwingWorker":
http://java.sun.com/docs/books/tutorial/uiswing/concurrency/worker.html

Sinon nous pouvons p.ex. lancer un "Thread travailleur" qui attend qu'un objet contenant la "valeur" soit présent dans une file d'attente. Avant de te lancer la dedans, je te conseille vivement la lecture du tutoriel Java et la synchronisation de notre cher ami rom1v. Tu le trouve ici:
http://www.javafr.com/tutoriaux/JAVA-SYNCHRONISATION_540.aspx
0
castorr Messages postés 3 Date d'inscription samedi 25 avril 2009 Statut Membre Dernière intervention 26 avril 2009
26 avril 2009 à 11:21
Pour faire simple, comment faire pour tester la fin d'un thread ?  ( j'ai dejà essayé les "if" et les "boolean" sans succès.
Il doit bien exister une fonction  du genre   isalive()  ou encore isInterrupt().
0
uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 9
26 avril 2009 à 12:26
> comment faire pour tester la fin d'un thread ?

Dans le tutoriel Java et la synchronisation tu trouve sous l'entête Threads un petit choix de méthodes à connaître de la classe Thread, dont la suivante:
void join() : Attente bloquante de la terminaison de l'exécution du thread (jusqu'à ce que la méthode run() associée au Thread ait fini de s'exécuter).
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
castorr Messages postés 3 Date d'inscription samedi 25 avril 2009 Statut Membre Dernière intervention 26 avril 2009
26 avril 2009 à 12:58
Merci, c'est ce que je cherchait.
0
Cornellus1985 Messages postés 22 Date d'inscription dimanche 26 avril 2009 Statut Membre Dernière intervention 7 juillet 2009
26 avril 2009 à 20:17
Il exsiste aussi une methode interrupted() et une methode isInterrupted() qui retourne un boolean.
par exemple dans ta methode run() tu peux ecrire :

public void run () {
try {
while (true) {
if (interrupted()) return ;
System.out.println (entier);
sleep(1000);
}
}
catch (InterruptedException e) {
return ;
}
0
Rejoignez-nous