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 :
- Le premier thread fait passer le compteur de 0 à 100, attend qu'il repasse à 0, puis fait à nouveau passer le compteur de 0 à 100, etc...
- Le second thread fait passer le compteur de 100 à 0, attend qu'il repasse à 100, puis le fait à nouveau passer de 100 à 0, etc...
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