Synchronisation en Java

publicité
Université de Provence
M ASTER I NFORMATIQUE
Programmation Parallèle
et Distribuée
2006-2007
distribué le 20 février 2007
Synchronisation en Java
A
Synchronisation : Problèmes Classiques
A.1
Quel est l’intérêt d’utiliser des files d’attente ? Donner les principales diff érences
entre LinkedList, LinkedBlockingQueue et ConcurrentLinkedQueue.
A.2
Ecrire le problème des Producteurs et Consommateurs en Java.
1. avec LinkedBlockingQueue
2. avec ArrayBlockingQueue
3. avec Semaphore
A.3
Ecrire le problème du Diner des Philosophes en Java.
B
Interrogation multi-serveurs
On dispose d’un certain nombre de serveur de calculs sp écialisés dans la multiplication :
chaque serveur mul répond à chaque requête req par mul × req. On veut concevoir un serveur
central qui puisse orienter des requêtes "mul x nb" vers le bon serveur et renvoyer la réponse.
Dans un souci d’optimisation, on n’ouvrira pas une nouvelle socket à chaque connexion mais on
maintiendra une table des serveurs de multiplication connect és et pour chacun d’entre eux, on
maintiendra systématiquement trois sockets ouvertes.
Les clients peuvent poser plusieurs questions de suite et attendent les r éponses dans le même
ordre :
$ telnet localhost 10000
5x12
=60
3x1024
7x23
2x150
=3072
le serveur (7) n’est pas disponible
2x700
=300
=1400
Proposer une architecture multithreadée à base de files d’attente pour ce serveur central.
Implémenter 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érer les cas des serveurs de multiplication non disponible.
B. Derbel, E. Godard
1
Téléchargement