Académique Documents
Professionnel Documents
Culture Documents
TP 5 : "les Threads"
Exercice 1 :
// Import de la classe Thread pour créer des threads
class Compteur extends Thread {
// Déclaration des variables membres pour le compteur
protected int count, inc, delay, Nit;
class Threads {
public static void main(String[] args) {
// Création et démarrage de deux threads Compteur avec des paramètres
différents
new Compteur(0, 1, 30, 10).start(); // Premier thread, incrémente de 1,
pause de 30 ms
new Compteur(0, -1, 100, 10).start(); // Deuxième thread, décrémente de 1,
pause de 100 ms
}
}
Exercice 2 :
// Classe CompteBancaire pour représenter un compte bancaire
class CompteBancaire {
private int valeur; // Solde du compte
1
// Constructeur de la classe CompteBancaire
public CompteBancaire(int valeur) {
this.valeur = valeur; // Initialisation du solde
}
}
}
}
2
Exercice 3 :
// Classe Station pour gérer les usagers et le bus
class Station {
private boolean busWaiting = false; // Indique si un bus est en attente
// Méthode appelée par le bus lorsqu'il est prêt à charger les usagers
public synchronized void chargerUsagers() {
busWaiting = false; // Le bus est parti, plus de bus en attente
notifyAll(); // Réveille tous les threads usagers en attente
}
3
public void run() {
try {
sleep(heureArrivee); // Simulation de l'heure d'arrivée du bus
System.out.println("Bus arrive à la station");
s.busArrive(); // Le bus est prêt à charger des usagers
Thread.sleep(500); // Attente pour que les usagers montent à bord
s.chargerUsagers();
System.out.println("Bus repart de la station");
} catch (InterruptedException e) {
Thread.currentThread().interrupt(); // Gestion de l'interruption
}
}
}
Bus b7 = new Bus(Gare, 2000); // Crée un bus qui arrive après 2000 ms
for (Usager usager : u) {// La boucle for est utilisée pour itérer à travers
le tableau d'usagers et effectuer une opération sur chaque usager.
usager.start(); // Démarre les threads des usagers
}
}
}
Exercice 4:
import java.util.LinkedList;
4
totalItemsProduced++;
// Classe principale
class ProducteurConsommateur {
public static void main(String[] args) throws InterruptedException {
TabObject tabObject = new TabObject(3); // Créer un tampon avec une capacité
de 3 éléments