'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.