en faite je suis entrain de lire le livre java concurrence, et les choses deviennent difficile pour raisonner.

voila un exemple sur le livre:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class NoVisibility {
 private static boolean ready;
 private static int number;
 private static class ReaderThread extends Thread {
 public void run() {  
   while (!ready)
      Thread.yield();
   System.out.println(number);
 }
}
 public static void main(String[] args) {
   new ReaderThread().start();
   number = 42;
   ready = true;
 }
}
d’après l'auteur le programme peut afficher 0 ou 42 ou rien affiché.
pour moi le programme doit toujours afficher 42 puisque le 2ème thread donne la main au thread principale pour initialisé la valeur number à 42.

si quelqu'un peut me clarifier la situation ou le programme va afficher 0 et une boucle infinie et merci