Exemple de thread avec Java—la classe TiPoints

interface Vautour {
  public void signalFin ();
}

public class TiPoints implements Vautour {
  //
  // Classe interne, thread lisant une touche et
  // signalant à un Vautour que la touche a été lue
  //
  private class LireUneTouche extends Thread {
    private Vautour m_Observateur;
    public LireUneTouche (Vautour observateur) {
      m_Observateur = observateur;
    }
    public void run () {
      try {
        System.in.read ();
      } catch (java.io.IOException ioe) {
      }
      m_Observateur.signalFin ();
    }
  }
  //
  // Le code de TiPoints à proprement dit
  //
  private boolean m_Décès;
  public void signalFin () {
    m_Décès = true;
  }
  public TiPoints () {
    m_Décès = false;
  }
  public boolean estDécédé () {
    return m_Décès;
  }
  public void agir () {
    LireUneTouche lut = new LireUneTouche (this);
    lut.start ();
    while (!estDécédé ()) {
      System.out.print (".");
      try {
        Thread.sleep (1000);
      } catch (InterruptedException ie) {
      }
    }
  }
  public static void main(String[] args) {
    TiPoints tp = new TiPoints ();
    tp.agir ();
  }
}

Tel que vu en classe, un thread Java est une classe dérivant de thread et exposant une méthode publique de type void nommée run(). Il y a des variantes à cette stratégie, explorées dans les notes de cours et qui impliquent l'interface Runnable, mais nous limiterons notre regard à l'essentiel.

Dans l'exemple proposé à droite, que vous pouvez déposer dans le fichier TiPoints.java, puis compiler et exécuter :

Je vous invite à essayer le tout et à poser des questions s'il y a lieu.