/** * * Course du 1000ms. * on utilise sleep pour simuler le temps nécessaire pour parcourrir 100m * et donner ainsi la chance au second thread de s'exécuter. * * * * @author: Jean Gourdin * @author: M.Lokbani (dans le contexte ift1176) * @version: 1.1 * */ class Coureur extends Thread { /* constructeur de la classe */ public Coureur (String str) { super(str); // ici on passe le nom du Thread } /* on redéfénit run() pour décrire le comportement d'un coureur quelconque */ public void run() { /* la valeur i est incrémentée lors du passage à la ième centaine de mètres */ for (int i =1; i<=10; i++) { // Le nom du Thread est récuppéré avec la fonction getName System.out.println(i*100 + " m par " + getName()); try { /* pause aléatoire de 1 seconde maximum qui simule le temps mis par chaque coureur pour franchir 100 m */ sleep((int)(Math.random() * 1000)); } catch (InterruptedException e) {} } System.out.println("information sur le Thread ..." + this); System.out.println(getName() + " est arrive ! "); } } // classe pour tester la classe Coureur class Course { public static void main (String[] args) { // Il s'agit d'une classe de coureurs System.out.println("Passage aux : "); Coureur j = new Coureur ("Jean"); Coureur p = new Coureur ("Paul"); // On lance les deux coureurs. j.start(); p.start(); } } /* Passage aux : 100 m par Jean 100 m par Paul 200 m par Jean 300 m par Jean 200 m par Paul 400 m par Jean 300 m par Paul 500 m par Jean 600 m par Jean 400 m par Paul 700 m par Jean 800 m par Jean 500 m par Paul 900 m par Jean 1000 m par Jean 600 m par Paul information sur le Thread ...Thread[Jean,5,main] Jean est arrive ! 700 m par Paul 800 m par Paul 900 m par Paul 1000 m par Paul information sur le Thread ...Thread[Paul,5,main] Paul est arrive ! */