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