TP 10 de Système 1ere Anne Informatique 2005-2006 : Threads (1)

Exercice 1

Question 1

Écrivez un programme où deux Threads partagent un compteur (un objet contenant un int). Le premier thread l'incrémente, et le second le décrémente. Le main affiche en boucle la valeur du compteur.

Question 2

Même question, mais cette fois-ci on désire le comportement suivant :

On suppose que le compteur démarre à 0. Mais votre programme doit aussi fonctionner si le compteur démarre à 100. Vous pouvez dans cette question supposer que chaque thread « dort » pendant quelques ms avant et après avoir commencé (resp. terminé) de décrémenter votre variable.

Exercice 2

Récupérez et décompressez snails.tgz. Il s'agit d'un simulateur de courses d'escargots.

Question 1

Lire les différentes classes.

Question 2

Chaque escargot sera contrôlé par un thread qui augmentera son abscisse d'une valeur donnée (par exemple 10), fera une pose de 100ms, et ce jusqu'à ce que l'escargot aie passé la ligne d'arrivée. La classe utilisée sera EscargotControle. Complétez les classes CourseEscargotAppli et EscargotControle.

Question 3

On souhaite afficher en fin de course un message annonçant que la course est terminée. Pour ce faite, on veut utiliser la méthode join(). Supposons que l'on place les appels de join() dans la méthode commence(). Que se passe-t-il alors ?
Serge ROSMORDUC