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.