Vous êtes sur la page 1sur 2

Série d’exercices : Programmation multitâches

Exercice 1:
Créer une classe ClasseThread, dérivant de Thread, ayant pour fonction d’écrire sur la sortie
standard son nom, ainsi qu’un compteur. (de 1 à 100 000 par exemple)
Depuis une classe à part, créer 4 objets de ClasseThread s’exécutant simultanément.
Modifiez le code de l’exercice précédent de sorte à utiliser l’interface Runnable.

Exercice 2:

Ecrire une application JAVA qui lance trois threads voitures dans une course.

L’application est composée des classes suivantes : Véhicule, Piste, PisteLine et Course.

Exercice 3
Ecrivez en Java un programme qui utilise deux threads en pseudo-parallèle :
‐ Le premier (T1) affiche les nombres pairs (de 0 à 20).
‐ Le second (T2) affiche les nombres impairs (de 1 à 19).
1- Déterminez le résultat de ce programme lors de son exécution ?
2- Donner une nouvelle version du programme Java de façon que l’exécution s’effectue en
alternance entre T1 et T2 afin d’avoir un affichage de 0 à 20 en ordre.

Exercice 4
Ecrivez un programme dont le thread principal lance et nomme trois nouveaux threads. Chaque
thread ainsi créé doit exécuter 10 fois les actions suivantes :
‐ Attendre un temps aléatoire compris entre 0 et 200 ms,
‐ Puis afficher son nom
Le thread principal devra attendre la fin de l'exécution des trois threads qu'il a créés avant de
terminer son exécution.

Exercice 5
Ecrivez en Java un programme qui utilise quatre threads en pseudo-parallèle :
‐ T1 affiche les nombres premiers entre 1 et 249.
‐ T2 affiche les nombres premiers entre 250 et 499.
‐ T3 affiche les nombres premiers entre 500 et 749.
‐ T4 affiche les nombres premiers entre 750 et 999.
Le thread principal devra attendre la fin de l'exécution des quatre threads qu'il a créés avant de
terminer son exécution.
Exercice 6
On souhaite simuler un combat entre deux boxeurs B1 et B2. Un boxeur est défini par son nom et
son énergie. L’énergie est initialisée à 100. Pendant le combat, chaque boxeur donne un coup à son
adversaire en alternance. Un coup a une vitesse et une force définie comme suit:
vitesse = (int) (Math.random()*600+1): durée d’attente entre deux coups.
force = (int)(Math.random()*6+1): à soustraire de l’énergie de l’adversaire.
Le premier boxeur ayant une énergie =0 est le perdant.
 Ecrire une classe qui simule un boxeur.
 Ecrire une classe qui simule un combat.
Exercice 7
On veut afficher dans une fenêtre un compteur qui, partant de 0, s’incrémente régulièrement (par
exemple toute les secondes). On y dispose quatre boutons : « démarre », « suspendre »,
« reprendre » et quitter, qui permettent respectivement de lancer, d’interrompre et de reprendre
le compteur, et de quitter l’application.

1- Ecrire la classe Compteur dérivée de la classe Thread, qui a trois attributs : un entier cpt
représentant la valeur du compteur ; un entier tempo donnant le temps mort entre deux
incrémentation ; et un champ de type MonFrame.

2- Ecrire la classe MonFrame, sous classe de JFrame, qui a six champs : un JTextField ou un JLabel
pour afficher la valeur du compteur, les quatre boutons et un champ de type Compteur.

Exercice 8
Créer une fenêtre qui affiche l’heure actuelle et qui actualise toutes les secondes.
Pour ce faire :
1- Créer une classe Clock qui dérive de la classe JTextField et qui implémente l’interface Runnable.
La classe Clock contient :
 L’attribut : DateFormat forme; //pour modifier le format de la date
 Un constructeur sans paramètres qui initialise l’attribut forme pour afficher l’heure
seulement.
 Le setter setForme() qui modifie le format de la date.
 La redéfinition de la méthode run pour actualise l’heure toutes les secondes.

2- Créer la classe MonFrame qui contient les attributs:


 heure : JLabel.
 c: Clock .
 ck : JCheckBox
Le JCheckBox sous l’heure indiquant à l’utilisateur s’il veut la date complète (jour+heure) ou
seulement l’heure, puis vous ferez réagir à ce JCheckBox suivant s’il est coché ou non, vous devez
afficher l’heure dans le bon format.
Indication :
Pour cela utiliser la classe DateFormat et notamment ces méthodes getDateInstance() ,
getTimeInstance() et getInstance() . Vous utiliserez également la classe Date.

Vous aimerez peut-être aussi