У меня есть часть кода, которая добавляет вторую запись в ArrayList, а другую, которая извлекает обновление. Это работает большую часть времени, но время от времени я получаю исключение IndexOutOfBOundsException, указывая, что индекс не был обновлен вторым значением. Тест прост, я просто нажимаю ту же кнопку несколько раз, и после произвольного количества нажатий программа вылетает из строя.Проблема параллелизма в одном потоке?
Следующие две части, содержащиеся в фрагменте, называются друг за другом:
Это добавляет элемент в ArrayList:
if (mTaskPaused == false) {
mTask.timeStamp();
}
И это, вызывается непосредственно после, получает второй (иногда несуществующий) item from the arraylist:
LocalDateTime end = mTask.getTimestamps().get (1);
Что здесь происходит?
код, который вы отправили, недостаточно для диагностики проблемы. – akonsu
Кроме того, если имеется только один поток (как подразумевается в заголовке вопроса!), То это не проблема параллелизма. –
Действительно, существует только один поток. Или, по крайней мере, * я * не создаю никаких других потоков. Вот почему непоследовательное поведение меня озадачивает. – abc32112