<<<M1 - UE2

UE2 - TP 1

Utilisation des threads


Exercice 1.1

Ecrire un premier programme qui lance plusieurs threads. Chaque thread affichera à l'écran son nom ainsi qu'un indice de boucle i qui variera de 1 à 10. Pour cette valeur d'indice on affichera le résultat de fibonacci(i). Au bout de 10 itérations on arrêtera le thread.

On calculera les valeurs de fibonacci de manière récursive.

On rappelle que :

  • fib(1) = 1
  • fib(2) = 1
  • fib(n) = fib(n-1) + fib(n-2)

Exercice 1.2

Ecrire un programme qui lance plusieurs threads (1 à 20). Chaque thread calcule fibonacci(i+1) ou i représentera son indice dans un tableau (i= 0, .., 19). Faire en sorte que l'on termine l'ensemble des calculs avant de calculer la somme des résultats.

On pensera à utiliser join

Exercice 1.3

Ecrire un programme qui lance plusieurs threads. Chaque thread calcule fibonacci(i+1) ou i représentera son indice dans un tableau. Faire en sorte que l'on effectue la somme dès qu'un résultat est prêt.

Exercice 1.4

Combien de thread peut on lancer au maximum en Java ?

Exercice 1.5

Quel gain existe t-il entre un traitement parallèle et un traitement séquentiel en Java ?

Exercice 1.6

On désire modéliser une chaîne de production de voitures. La chaîne est alimentée par d'autres chaînes de production (ou chaînes d'approvisionnement) en entrée :

  • pour les pneus (classe Tire)
  • pour le moteur (classe Motor)
  • pour la carrosserie (classe Body)

Les chaînes d'approvisionnement produisent à intervalles réguliers des éléments qui composent la voiture (pneu, moteur, carrosserie). Dès que 4 pneus, 1 moteur et 1 carroserie sont disponibles ils sont mis sur la chaîne de production de voitures pour être assemblés et on considère qu'une nouvelle voiture sera produite.

Le but du programme est de vérifier en fonction du nombre de chaînes d'approvisionnement et de la fréquence de production des éléments si on arrive à un état stable, c'est à dire qu'on ne produit pas plus de pneus que nécessaire par exemple.

Modéliser le problème, puis l'implanter. On testera avec les paramètres suivants. Indiquez, dès qu'une nouvelle voiture est produite, le nombre de pneus, moteurs et carrosseries en attente. Puis dessiner (gnuplot) l'évolution des éléments en entrée.

Jeu de données 1

Tire factories3
Tire frequency1 min
Motor factories3
Motor frequency5 min
Body factories1
Body frequency4 min

Ici, Tire Factories représente le nombre de chaînes d'approvisionnement pour les pneus, il y en a donc 3 et chacune produit un pneu toutes les 1 min.

Jeu de données 2

Tire factories2
Tire frequency1 min
Motor factories3
Motor frequency5 min
Body factories2
Body frequency4 min

Dans chacun des cas, déterminez la durée de production de 50 voitures.