Académique Documents
Professionnel Documents
Culture Documents
Sommaire
Exercice 1 : Nom par défaut de threads et méthode isAlive()........................................................................................................1
Exercice 2 : DestroyJavaVM............................................................................................................................................................2
Exercice 3 : ThreadGroup............................................................................................................................................................... 3
Exercice 1 : Nom par défaut de threads et méthode isAlive()
Indication : la méthode de classe currentThread() retourne un pointeur sur l’objet Thread qui appelle cette
méthode.
Lancer l’exécution de la classe BavarderEtLancerLePerroquet4.
Quel est le nom du thread principal ?
Quel est le nom qui est donné par défaut à l’autre thread ?
Quelle est l’utilité de la méthode isAlive() ?
class BavarderEtLancerLePerroquet4{
public static void main(String args[]) {
Perroquet4 perroquet1 = new Perroquet4 ("rsd",2);
Perroquet4 perroquet2 = new Perroquet4 ("gl",2);
Perroquet4 perroquet3 = new Perroquet4 ("sic",2);
Perroquet4 perroquet4 = new Perroquet4 ("mid",2);
perroquet1.start();
perroquet2.start();
perroquet3.start();
perroquet4.start();
}
}
1
Exercice 2 : DestroyJavaVM
Indication :
La méthode setName (String nom) permet de nommer un Thread.
Le constructeur de Thread offre la possibilité également de le nommer comme suit : Thread (String nom).
La méthode de classe activeCount () donne le nombre de Threads actifs dans le groupe de l'appelant.
La méthode de classe enumerate (Thread[ ] tableau) stocke dans le tableau donné les références des Threads
actifs dans le groupe de l'appelant et ses sous-groupes. Elle renvoie le nombre de Threads actifs obtenus.
Maintenant, modifier votre code afin de lancer le main 5 fois (5 blabla) et le perroquet 10 fois (10 coco).
2
Justifier ce résultat, c’est quoi le DestroyJavaVM ? Pourquoi est-il lancé ?
Exercice 3 : ThreadGroup
Soit la classe java suivante :
class TestTest {
public static void main (String [] args){
ThreadGroup master = new ThreadGroup ("MASTER");
ThreadGroup rsd = new ThreadGroup (master,"rsd");
FFF t1 = new FFF (rsd, "Etudiant 1");
FFF t2 = new FFF (rsd, "Etudiant 2");
FFF t3 = new FFF (rsd, "Etudiant 3");
ThreadGroup sic = new ThreadGroup (master,"sic");
FFF t4 = new FFF (sic, "Etudiant 4");
FFF t5 = new FFF (sic, "Etudiant 5");
ThreadGroup principal = Thread.currentThread ().getThreadGroup ();
int a = principal.activeGroupCount ();
System.out.println ("Les groupes de threads actifs dans " + principal.getName () +" : " + a);
ThreadGroup[] grpList = new ThreadGroup[a];
int count = principal.enumerate(grpList);
for (int i = 0; i < count; i++)
System.out.println(" -ThreadGroup " + grpList[i].getName() + " trouvé");
System.out.println ("Le père de MASTER est : "+master.getParent().getName());
System.out.println ("Le père de rsd est : "+rsd.getParent().getName());
System.out.println ("Le père de sic est : "+sic.getParent().getName());
System.out.println ("Etudiant 1 appartient à : "+t1.getThreadGroup().getName());
System.out.println ("Etudiant 5 appartient à : "+t5.getThreadGroup().getName());
System.out.println ("Avant start, l'état de Etudiant 1 est : "+ t1.getState());
t1.start();
System.out.println ("Après start, l'état de Etudiant 1 est : "+ t1.getState());
t2.start();
t3.start();
t4.start();
t5.start();
}
}
Que fait le code précédent ? Lister en particulier les groupes crées et leurs membres. Faites un dessin
complet.