Значение не обновляется в цикле while, если не распечатано [duplicate]
На этот вопрос уже есть ответ здесь:
Цикл не видит значение, измененное другим потоком без оператора печати 1 ответИтак, у меня есть поток мониторинга, который проверяет размер ArrayList и делает что-то после того, как этот размер превысит определенное число. У меня сейчас проблема в том, что значение размера никогда не обновляется, если в моем цикле нет оператора print. Вот некоторый код, чтобы показать, что именно у меня происходит.
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
}
}
Этот код выше не работает. Это никогда не входит в утверждение if. Тем не менее, это прекрасно работает:
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
}
}
РЕДАКТИРОВАТЬ: getSize () код:
public ArrayList<byte[]> myQueue = new ArrayList<byte[]>();
public int getSize() {
return myQueue.size();
}
ПРИМЕЧАНИЕ: у меня запущен другой поток, который обновляет и добавляет в мой список в моем классе t.
Любая помощь? это действительно раздражает, когда я пытаюсь выполнить отладку в консоли.