cedicat
Messages postés16Date d'inscriptionsamedi 30 août 2003StatutMembreDernière intervention 9 juin 2007
-
26 juil. 2004 à 19:53
cedicat
Messages postés16Date d'inscriptionsamedi 30 août 2003StatutMembreDerniè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.
cs_neodante
Messages postés2835Date d'inscriptionlundi 11 août 2003StatutModérateurDernière intervention16 décembre 200611 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 ...