Я создал этот простой рабочий поток для вычисления палиндромов путем итерации по ArrayList. Я получаю сообщение об ошибке при выполнении строки temp_str1 = it.next();. Buffer_List ArrayList не используется никаким другим потоком, поэтому использование синхронизированного блока не помогает. Я просмотрел предыдущие вопросы, и они не очень помогли. Я бы очень хотел найти решение этой проблемы.
Вот мой код:
private void find_Palindromes(ArrayList<String> buffer_List){
Iterator<String> it = buffer_List.iterator();
String temp_str1, temp_str2;
while(it.hasNext()){
temp_str1 = it.next();
//System.out.println(temp_str1);
it.remove();
if(is_Palindrome(temp_str1)){
to_Shared_Queue(temp_str1);
palin_count++;
}
}
}
Изменить код: добавлено в_Shared_Queue
private void to_Shared_Queue(String str){
synchronized(shared_queue){
Shared_queue.add(str);
}
}
to_Shared_Queue
? если список там не изменен, возможно, к списку все еще каким-то образом обращаются одновременно... - person user140547   schedule 01.10.2016