Wartość nie aktualizuje się w pętli while, chyba że zostanie wydrukowana [duplikat]
To pytanie ma już tutaj odpowiedź:
Pętla nie widzi wartości zmienionej przez inny wątek bez instrukcji drukowania 1 odpowiedźOk, więc mam wątek monitorowania, który sprawdza rozmiar ArrayList i robi coś po tym rozmiarze, który jest większy niż pewna liczba. Problem, który mam teraz, to wartość rozmiaru, która nigdy nie jest aktualizowana, chyba że w mojej pętli mam instrukcję print. Oto kod, który pokaże, co dokładnie robię.
while(working) {
// Get size function just returns the size of my list in my t class
int size = t.getSize();
if (size >= 10) {
//DO STUFF
}
}
Ten kod nie działa. Nigdy nie wchodzi w instrukcję if. Jednak działa to dobrze:
while(working) {
// Get size function just returns the size of my list in my t class
int size = t.getSize();
System.out.println(size);
if (size >= 10) {
//DO STUFF
}
}
EDYCJA: kod getSize ():
public ArrayList<byte[]> myQueue = new ArrayList<byte[]>();
public int getSize() {
return myQueue.size();
}
UWAGA: Mam inny wątek, który aktualizuje i dodaje do mojej listy w mojej klasie t.
Jakaś pomoc? jest to naprawdę denerwujące, gdy wypluwa numery, gdy próbuję debugować w konsoli.