Problème de Thread !

cedicat Messages postés 16 Date d'inscription samedi 30 août 2003 Statut Membre Dernière intervention 9 juin 2007 - 26 juil. 2004 à 19:53
cedicat Messages postés 16 Date d'inscription samedi 30 août 2003 Statut Membre Dernière intervention 9 juin 2007 - 27 juil. 2004 à 19:25
Bonjour,
Je débute en Java et j'ai un problème avec les Threads.
Je veux savoir si le Thread que j'ai créé est actif ou pas, pour ce faire je construis un tableau avec le nom de tous les thread mais le mien n'y apparaît jamais ???

Thread[] _tableauDeThreads = new Thread[Thread.activeCount()];
for( int i = 0; i < Thread.enumerate(_tableauDeThreads); i++)
{
System.out.println("Thread n°"+ i + " : "+ _tableauDeThreads [i].getName());
}
// Thread.activeCount() 33 et Thread.enumerate(_tableauDeThreads) 32

Thread _monThread = new Thread("MonThread");
_monThread.Start();
// Thread.activeCount() 34 et Thread.enumerate(_tableauDeThreads) 32

Thread[] _tableauDeThreads = new Thread[Thread.activeCount()];
for( int i = 0; i < Thread.enumerate(_tableauDeThreads); i++)
{
System.out.println("Thread n°"+ i + " : "+ _tableauDeThreads [i].getName());
}

Thread.activeCount() prend bien en compte mon nouveau Thread mais il n'apparaît pas dans le tableau.
Je ne comprends pas la différence entre Thread.activeCount() et Thread.enumerate(_tableauDeThreads).
Si j'utilise Thread.activeCount() dans la boucle for une erreur intervient !!?

Si quelqu'un peu m?apporter de l'aide je le remercie par avance.

4 réponses

cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
27 juil. 2004 à 09:18
:big) Neodante :big)

En fait je pense que tu n'utilises pas correctement l'enumerate ...
Utilise la ligne :
Thread.enumerate(_tableauDeThreads);
puis :
for (int i = 0; i < _tableauDeThreads.length; ++i){
...
}
déjà ce sera mieux ... parce que à chaque boucle tu lui demandes d'énumérer tes Threads ... donc déjà c'est pas optimal !

Ensuite pour ton problème de nombre ... la thread que tu viens de créer n'est surement pas encore active ... met un Thread.sleep(1000) entre la création du nouveau Thread et la boucle suivante et cela devrait surement revenir comme tu le veux ...

@+ et tiens moi au courant ... sur ce coup je ne suis pas sur sur ...

[Responsable www.neogamedev.com]
0
cedicat Messages postés 16 Date d'inscription samedi 30 août 2003 Statut Membre Dernière intervention 9 juin 2007
27 juil. 2004 à 18:26
Ok merci Neodante ça fonctionne.
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
27 juil. 2004 à 18:58
:big) Neodante :big)

C'était ce que je t'avais dit ou ta résolu le prob tout seul ???
@++

[Responsable www.neogamedev.com]
0
cedicat Messages postés 16 Date d'inscription samedi 30 août 2003 Statut Membre Dernière intervention 9 juin 2007
27 juil. 2004 à 19:25
Ma solution fonctionné mais je ne faisais pas dormir le Thread suffisamment longtemps.
Merci encore et bonne soirée
0
Rejoignez-nous