next up previous contents index
suivant: La Machine Virtuelle Java monter: Objets actifs précédent: La vie d'un agent   Table des matières   Index

Exemple

Voici deux agents, l'un émettant un 'a', l'autre un 'b' à des instants aléatoires :

package exemples;

class Concurrence {
  public static void main(String[] args) {
    Agent 
      a = new Agent('a'), 
      b = new Agent('b');
    a.start();
    b.start();
  }
}

Chaque agent est une instance de la classe suivante :

package exemples;

class Agent implements Runnable {
  char c;
  private Thread contrôleur;
  Agent(char c) {
    this.c = c;
    contrôleur = new Thread(this);
  }
  
public void run() {
    while (true) {
      System.out.print(c);
      try {
        Thread.sleep((long)(Math.random()*1000));
      } catch (InterruptedException e) {}
    }
  }
}

L'exécution de la classe exemples.Concurrence affiche une suite de caractères, résultat de l'entrelacement des flots d'instructions de chaque agent :

baabababbabbaaababbabbbbaabbabaaababbabababaa ...

La programmation multithread est un aspect important de la programmation des systèmes logiciels contemporains.



Rene' LALEMENT 2002-11-07