distribu´e le 11 mars 2009
Universit´
e de Provence
MASTER INFORMATIQUE
Programmation Parall`
ele
et Distribu´
ee
2008-2009
Synchronisation en Java
ASynchronisation en Java
A.1 Quelle est la diff´
erence entre visibilit´e et atomicit´e ?
A.2 Qu’est-ce qu’une structure de donn´
ees thread-safe ? Comment se fait-il qu’il existe
des structures de donn´
ees non thread-safe ?
A.3 Quel est l’int´
erˆ
et d’utiliser des files d’attente ? Donner les principales diff´
erences
entre LinkedList,LinkedBlockingQueue et ConcurrentLinkedQueue.
BProbl`emes Classiques
B.4 Ecrire le probl`
eme des Producteurs et Consommateurs en Java.
1. avec ArrayBlockingQueue
2. avec LinkedBlockingQueue
3. avec Semaphore (Indication : on pourra d´
efinir une classe SemBlockingQueue impl´
ementant
l’interface BlockingQueue.)
B.5 Ecrire le probl`
eme du Coiffeur en Java.
CInterrogation multi-serveurs
On dispose d’un certain nombre de serveur de calculs sp´
ecialis´
es dans la multiplication :
chaque serveur mul r´
epond `
a chaque requˆ
ete req par mul ×req. On veut concevoir un serveur
central qui puisse orienter des requˆ
etes "mul x nb" vers le bon serveur et renvoyer la r´
eponse.
Dans un souci d’optimisation, on n’ouvrira pas une nouvelle socket `
a chaque connexion mais on
maintiendra une table des serveurs de multiplication connect´
es et pour chacun d’entre eux, on
maintiendra syst´
ematiquement trois sockets ouvertes.
Les clients peuvent poser plusieurs questions de suite et attendent les r´
eponses dans le mˆ
eme
ordre :
$ telnet localhost 10000
5x12
=60
3x1024
7x23
2x150
=3072
le serveur (7) n’est pas disponible
2x700
=300
=1400
Proposer une architecture multithread´
ee `
a base de files d’attente pour ce serveur central.
Impl´
ementer l’ensemble en Java. On supposera pour commencer que le serveur mul est sur le
port 10000 + mul. Ensuite on pourra supposer que l’on dispose d’un fichier de correspondance
mul ←→hote:port. On n’oubliera pas de g´
erer les cas des serveurs de multiplication non dis-
ponible.
E. Godard 1