/* * simuler un contrôle dans une chaîne de production * * @author: harold trannois @ u-picardie * @author: M.Lokbani (adaptation ift1176 et validation jdk 1.3) * * Première Partie * --------------- * * Définir la classe ControleurSac qui implémente l'interface * Runnable. * */ class ControleurSac implements Runnable { String nom; // nom du controleur de sac /* * Chaque ControleurSac possède un nom qui est initialisé par un * constructeur. */ public ControleurSac(String inNom) { nom = inNom; } /* * La méthode run() est en fait une boucle qui appelle la méthode * verifieSac(int) en lui passant un entier représentant le numéro * du sac. Cet entier varie de 0 à 9 pour représenter les dix sacs. */ public void run() { for (int i=0 ; i<10 ; i++) { verifieSac(i); } } /* * La méthode verifieSac(int) doit afficher un message indiquant * quel vérificateur commence à vérifier quel sac, puis elle doit * appeler la méthode sleep en lui passant un entier aléatoire * entre 0 et 1000, enfin elle doit afficher un message indiquant * quel vérificateur a fini de vérifier quel sac. */ private void verifieSac(int i) { System.out.println(nom + " commence le sac " + i); try { double delai = Math.random()*1000; Thread.sleep((int)delai); } catch (InterruptedException e) { } System.out.println(nom + " a fini le sac " + i); } } /* * Construire une classe Simulation qui contient le programme * principal main. Ce programme instancie deux vérificateurs, * "Ahmed" et "Albert" et lance ces deux vérificateurs chacun dans * son propre thread. */ public class Simulation { public static void main(String[ ] args) { ControleurSac a; Thread t; a = new ControleurSac("Ahmed"); t = new Thread(a); t.start(); a = new ControleurSac("Albert"); t = new Thread(a); t.start(); } } /* Ahmed commence le sac 0 Albert commence le sac 0 Albert a fini le sac 0 Albert commence le sac 1 Ahmed a fini le sac 0 Ahmed commence le sac 1 Albert a fini le sac 1 Albert commence le sac 2 Ahmed a fini le sac 1 Ahmed commence le sac 2 Ahmed a fini le sac 2 Ahmed commence le sac 3 Albert a fini le sac 2 Albert commence le sac 3 Ahmed a fini le sac 3 Ahmed commence le sac 4 Albert a fini le sac 3 Albert commence le sac 4 Ahmed a fini le sac 4 Ahmed commence le sac 5 Albert a fini le sac 4 Albert commence le sac 5 Ahmed a fini le sac 5 Ahmed commence le sac 6 Albert a fini le sac 5 Albert commence le sac 6 Ahmed a fini le sac 6 Ahmed commence le sac 7 Ahmed a fini le sac 7 Ahmed commence le sac 8 Albert a fini le sac 6 Albert commence le sac 7 Albert a fini le sac 7 Albert commence le sac 8 Albert a fini le sac 8 Albert commence le sac 9 Ahmed a fini le sac 8 Ahmed commence le sac 9 Albert a fini le sac 9 Ahmed a fini le sac 9 */