J'ai le code suivant qui récupère le premier élément d'une file d'attente seulement s'il a au moins 2 éléments. Pour une raison quelconque, il n'interroge pas le premier élément. Toutefois, si j'ajoute une instruction d'impression, l'impression et l'interrogation seront effectuées. La méthode est dans un thread, et il y a un autre thread ajoutant un élément à la file d'attente, ce thread lit dans la file d'attente.La file d'attente ne fonctionne pas avec le fil?
...
public void run(){
while(beginning){
int size = queue.size();
// adding this will cause the program to enter if below: System.out.println(size);
if(size > 1){
System.out.println("data: " + queue.poll());
beginning = false;
}
}
}
...
Si l'instruction println est ajouté, il imprimera
....
données: données
Si l'instruction println est de retirer, il ne sera pas rien imprimer.
En fait, aussi longtemps que je mets quelque chose là-dedans, un Thread.sleep (1) ou une déclaration d'impression aléatoire, il interrogera les données et l'imprimer
Thanx pour toute entrée.
duplication possible de [La boucle ne voit pas de valeur modifiée sans instruction d'impression] (http://stackoverflow.com/questions/25425130/loop-doesnt-see-changed-value-without-a-print-statement) – Boann