# Exercice 3 : Examen des threads

Vous ferez connaissance, dans cet exercice, avec les groupes de threads, les threads et les blocs de pile, qui constituent le projet Blink. Vous apprendrez également à surveiller les modifications des valeurs des variables au fur et à mesure du déroulement du programme.

1. Sélectionnez Déboguer -> Threads/Pile.
   La fenêtre Threads/Pile de Java Development Environment s'affiche.

   Le projet Blink comprend trois groupes de threads, chacun d'eux accompagné du glyphe :

   - `main` : est composé des threads qui s'exécutent dans Java Development Environment.
   - `sun.applet.AppletViewer.main` : comprend ceux qui s'exécutent dans l'afficheur d'appliquette.
   - `file:/your-installation-directory/jws/Blink/-threadGroup` : contient les threads en rapport direct avec le projet Blink.
   Le groupe de threads `sun.applet.AppletViewer.main` contient trois threads et le groupe `Blink` en comporte deux.
2. Observez `"AWT-EventQueue-0"`, le premier thread du groupe `sun.applet.AppletViewer.main`.

   Vous remarquerez les caractéristiques suivantes :

   - Le nom du thread est `java.awt.EventDispatch`
   - L'état du thread est "à un point d'arrêt".
   - La priorité d'exécution de ce thread est d'ordre 5. Le thread avec la plus haute priorité est exécuté en premier.

   Le glyphe accompagnant le thread est une indication supplémentaire de son état. Vous pourrez rencontrer divers glyphes, dont :
   Le thread est interrompu.
   Le thread est arrêté à un point d'arrêt.
   L'état du thread ne peut être déterminé.
   Le thread est un zombie.
   Le thread s'exécute.
   Le thread est en sommeil.
   Le thread attend une variable conditionnelle.

3. Observez la pile d'appel qui complète la classe thread.
   La pile d'appel comprend toutes les méthodes qui ont été appelées mais qui n'ont pas encore rendu la main. `Blink.paint`, qui était en cours d'exécution lorsque le programme s'est arrêté, est au sommet de la pile. Le bloc de pile est mis en évidence de sorte que vous pouvez sans problème savoir où s'est arrêté le programme. Chaque bloc de pile est accompagné du glyphe .
4. Ouvrez le bloc de pile `Blink.paint` en cliquant sur le signe + à côté du glyphe .
   Java Development Environment montre les variables et leurs valeurs actuelles dans le contexte de `Blink.paint`. Observez la variable `word`. Notez la valeur de `word`.
5. Cliquez sur le bouton Aller de la barre d'outils Editer/Déboguer.
   Le programme parcourt la boucle et s'arrête lorsqu'il rencontre le point d'arrêt pour la seconde fois. L'affichage de Threads/Pile est mis à jour et la valeur de la variable `word` modifiée. La valeur itère jusqu'au bouclage du cycle de "Java Development Environment is really cool :-)".
6. Ouvrez l'objet `this` en cliquant sur le signe + à côté du glyphe .
   Java Development Environment développe l'objet pour présenter toutes les variables qu'il englobe. Vous pouvez reproduire cette action sur les objets emboîtés (par exemple, `peer`).
7. Cliquez sur le signe - à gauche de l'objet `this`.
   Java Development Environment condense l'objet.

Leçon suivante :

  Exercice 4 : Progression pas à pas dans une méthode