pdf - e-book - archive - github.com

2.14  Threads

2.14.1  Prise en main

Exercice 1 La méthode start()

Remplacez les appels à start() par run(), que remarquez-vous ?

Exercice 2 Runnable

Reprenez le code de BinaireAleatoire et adaptez-le pour utiliser l’interface Runnable.

Corrigé

2.14.2  Synchronisation

Exercice 3 Méthode synchronisée

Créez un compteur commun aux deux threads un et zero, vous y placerez une fonction synchronized boolean stepCounter() qui retournera vrai tant que le compteur n’aura pas atteint sa limite, et qui retournera tout le temps faux ensuite. Le but étant d’afficher 30000 chiffres, peu importe que ce soit des 1 ou des 0.

Corrigé

Exercice 4 Instructions synchronisées

Reprennez l’exercice précédent en synchronisant les appels à stepCounter() dans la méthode run().

Corrigé

2.14.3  Débrouillez-vous

Exercice 5 Producteur consommateur

Implémentez une file permettant des accès synchronisés. Créez une classe écrivant des valeurs aléatoires dans la file et une classe lisant ces valeurs et les affichant au fur et à mesure. Lancez plusiseurs instances de la classe de lecture et plusieurs instances de la classe d’écriture sur la même file.

Corrigé

Exercice 6 Diner des philosophes

Implémentez le problème du diner des philosophes. Faites en sorte (dans la mesure du possible) qu’il n’y ait ni famine ni interblocage.

Corrigé