Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > ConcurrentModificationException


Автор: osonn 8.5.2006, 11:53
Подскажите плиз.
На странице средствами JSF рисуется картинка

Код
<h:dataTable value="#{myBean.files}" var="theFile">   
   <h:commandLink action="#{myBean.deleteFile}">
        <f:param name="needFile" value="#{theFile}"/>
   </h:commandLink>
</h:dataTable>
 


и в myBean делаем
Код

Set files = .......;
   public String deleteFile(){
            files.remove(needFile);
    }

Периодически выпадает
Код

Caused by: java.util.ConcurrentModificationException
    at java.util.TreeMap$PrivateEntryIterator.nextEntry(TreeMap.java:1031)
    at java.util.TreeMap$KeyIterator.next(TreeMap.java:1058)

Как правильно бороться с этим?

 

Автор: ALKS 8.5.2006, 12:02
синхронизировать надо, батенька. у вас несколько потоков одновременно могут с коллекцией работать и явно работают.

а в коде вашем что-то не бъет. исключение по-поводу TreeMap, а в коде Set

 

Автор: jimur 8.5.2006, 23:51
Цитата(ALKS @  8.5.2006,  12:02 Найти цитируемый пост)
а в коде вашем что-то не бъет. исключение по-поводу TreeMap, а в коде Set. 

Так ведь у TreeSet в потрохах и сидит TreeMap...

Что-то вроде этого: 
Код

Set set = Collections.synchronizedSet(new TreeSet());// вместо new TreeSet() то как у тебя Set создается
 

Автор: w1nd 9.5.2006, 00:07
Цитата(jimur @ 8.5.2006,  23:51)
Что-то вроде этого: 
Код

Set set = Collections.synchronizedSet(new TreeSet());// вместо new TreeSet() то как у тебя Set создается

Не поможет. Синхронизировать надо создание и работу итератора.   

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)