2013-11-17 4 views
0

У меня есть часть кода, которая добавляет вторую запись в ArrayList, а другую, которая извлекает обновление. Это работает большую часть времени, но время от времени я получаю исключение IndexOutOfBOundsException, указывая, что индекс не был обновлен вторым значением. Тест прост, я просто нажимаю ту же кнопку несколько раз, и после произвольного количества нажатий программа вылетает из строя.Проблема параллелизма в одном потоке?

Следующие две части, содержащиеся в фрагменте, называются друг за другом:

Это добавляет элемент в ArrayList:

if (mTaskPaused == false) { 
    mTask.timeStamp(); 
} 

И это, вызывается непосредственно после, получает второй (иногда несуществующий) item from the arraylist:

LocalDateTime end = mTask.getTimestamps().get (1); 

Что здесь происходит?

+3

код, который вы отправили, недостаточно для диагностики проблемы. – akonsu

+1

Кроме того, если имеется только один поток (как подразумевается в заголовке вопроса!), То это не проблема параллелизма. –

+0

Действительно, существует только один поток. Или, по крайней мере, * я * не создаю никаких других потоков. Вот почему непоследовательное поведение меня озадачивает. – abc32112

ответ

0
if(mTask.getTimestamps().count()>=1) 
{ 
LocalDateTime end = mTask.getTimestamps().get (1); 
} 
else 
{ 
    //Do the handling here for Arrays with only single entry. 
} 

Надеюсь, это поможет. Для правильного решения вам необходимо опубликовать полный код.

Смежные вопросы