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