Faculté des Sciences de Bizerte A.
U 2021/2022
Section GLSI3 27 octobre 2021
Développement d’applications réparties
Travaux dirigés N° 4 : Multithreading et Multicast
Exercice 1 Compteurs
1. Créer un thread permettant de compter de 1 à n (n est donné). A chaque étape, le
thread marque des pauses d’une durée aléatoire inférieure à 10 ms. Lorsqu’il finit, le
thread affiche son nom à l’écran.
2. Que donne le test lorsqu’on on lance 4 threads différents ? Qui finit le premier ?
3. Empêcher l’utilisateur de créer deux threads avec le même nom.
4. Permettre à chaque thread d’afficher son nom et son classement dès qu’il termine.
5. Attendre la fin des threads puis afficher l’ordre d’arrivée.
Exercice 2 Serveur TCP multithreadé
1. Donner deux exemples ou le Multithreading améliore la performance.
2. Est ce que le Multithreading améliore toujours les performances ?
3. Proposer un modèle C/S d’une application dans laquelle le serveur peut envoyer, selon
la demande du client, la date ou la version de la machine virtuelle. Un client peut aussi
envoyer une requête pour arrêter le serveur.
4. Écrire une classe java appelée ConnectionHandler permettant de traiter une requête
client.
5. Proposer une version multithreadée du serveur. A l’arrivée d’une requête, un thread
est créé pour la traiter (ConnectionHandler sera un thread ici).
Exercice 3 Calcul de la factorielle en Multicast
1. Proposer une application dans laquelle le client envoie des requêtes UDP pour de-
mander la valeur de la factorielle d’un entier. Pour faciliter le travail, proposer une
classe Message contenant les données à envoyer au serveur et offrant deux méthodes
permettant de convertir les messages vers et depuis un tableau d’octets.
2. Mettre à jour votre application pour que le calcul puisse être effectué sur un groupe de
serveurs. Puisque plusieurs réponses peuvent arriver à une seule requete, il faut allouer
un thread pour gérer les réponses.
3. Le problème qui se présente alors est qu’une requête du client peut avoir plusieurs
réponses, mettre à jour l’application. Vérifier le bon fonctionnement sur un exemple
bien choisi.
4. Votre application est elle sensible à la panne d’un serveur ? Généraliser au cas où les
serveurs sont avec état.
1/1 Khaled Barbaria