Universit´ e Paris Diderot – Paris 7 Programmation r´ eseau L3 Informatique Anne 2010-2011, 2
`emesemestre
TD n
◦1
Programmation concurrente en Java
Exercice 1
[Threads, attente] ´ Ecrivez une classe qui d´emarre deux threads. Le premier thread doit afficher dix fois "Bonjour !" en laissant passer une seconde entre chaque affichage. Le deuxi`eme thread doit afficher cinq fois "Salut !", en lassant passer deux secondes entre chaque affichage.
Indication : La m´ ethode statique sleep de la classe Thread permet de mettre un thread en attente.
Exercice 2
[Variable partag´ee entre threads ] On souhaite trouver toutes les oc- currences d’un ´el´ement dans un tableau donn´e. Pour cela, si le tableau est long (plus qu’une constante TAILLE MIN), on peut le couper en deux et effectuer la recherche ind´ependamment dans les deux moiti´es, en confiant la seconde partie
`
a un nouveau thread travaillant en parall`ele. ´ Ecrire un programme effectuant la recherche de cette mani`ere ; le programme devra afficher un message pour chaque occurrence trouv´ee, puis afficher le nombre total d’occurences l’´el´ement dans le ta- bleau. Pour cet exercice, vous pouvez utilisez la classe CompteurConcurrent que vous trouverez ci-dessous.
c l a s s CompteurConcurrent
{p r i v a t e i n t cp t = 0 ;
p u b l i c i n t getValu e ( )
{r e t u r n cp t ;
}p u b l i c S t r i n g t o S t r i n g ( )
{r e t u r n ””+ cp t ;
}s y n c h r o n i z e d p u b l i c v o i d i n c r e m e n t e ( )
{cp t ++;
}
s y n c h r o n i z e d p u b l i c v o i d i n c r e m e n t e ( i n t i )
{cp t = cp t+i ;
} }
Exercice 3