en faite je suis entrain de lire le livre java concurrence, et les choses deviennent difficile pour raisonner.
voila un exemple sur le livre:
d’après l'auteur le programme peut afficher 0 ou 42 ou rien affiché.
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; } }
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
Partager