CodeWithLocal.java

public class CodeWithLocal implements Runnable {
  // Variable locale à chaque processus léger qui exécute cette cible
  public ThreadLocal local = new ThreadLocal();
  // Variable partagée par les processus légers qui exécutent cette cible
  public Object shared;
  public void run() {
    // Récupération du nom du processus léger exécutant ce code
    String name = Thread.currentThread().getName();
    // Affectation et affichage de la variable locale
    local.set(new Long(Math.round(Math.random()*100)));
    System.out.println(name + ": locale: " + local.get());
    // Affectation et affichage de la variable partagée
    shared = new Long(Math.round(Math.random()*100));
    System.out.println(name + ": partagée: " + shared);
    // Attente pour laisser le temps à l'autre processus léger
    // d'exécuter ce même code
    try {
      Thread.sleep(1000);
    } catch (InterruptedException e) {
      Thread.currentThread().interrupt();
    }
    // Nouvel affichage des valeurs
    System.out.println(name + ": après attente, locale: " + local.get());
    System.out.println(name + ": après attente, partagée: " + shared);
  }
}