ConcurrentModificationException no Hibernate

2 respostas
B

Olá Pessoal,

Queria ver com vocês se podem me dar uma ajuda.

No seguinte código

Iterator lista = this.getComandosPendentes().iterator();

        logger.info( "Iniciando passagem do usuário " + this.nick );

            while( lista.hasNext() )
            {
                logger.info( "\tPassando por um comando do usuário." );
                AbstractCommandTurno temp = ( AbstractCommandTurno ) lista.next();
                temp.passaTurno();
            }

Na linha AbstractCommandTurno temp = ( AbstractCommandTurno ) lista.next();

Acontece o seguinte erro:

java.util.ConcurrentModificationException
    at java.util.HashMap$HashIterator.nextEntry(Unknown Source)
    at java.util.HashMap$KeyIterator.next(Unknown Source)
    at org.hibernate.collection.AbstractPersistentCollection$IteratorProxy.next(AbstractPersistentCollection.java:555)
    at Jogador.passaTurno(Jogador.java:539)
    at Usuario.passaTurno(Ticker.java:111)
    at Ticker.run(Ticker.java:79)

Alguém sabe o que pode ser?
Uma coisa que eu posso garantir é que não há nenhuma outra thread minha em execução no momento em que esta é executada. Eu sei disso pq eu bloqueio qualquer solicitação http que aconteça no momento que essa thread acorda.

Outra coisa importante, se eu debugo, e dou um tempo entre uma iteração e outra, não dá erro! Só se eu deixo executar ou se eu vou muito rápido nos passos.

Alguém tem alguma idéia do que pode ser?

2 Respostas

D

bota um synchronized na assinatura do método e veja se resolve…

B

Não, eu tentei =/

Tentei dar um synchronized no método e também no objeto lista

synchronized ( lista )

{

…

}

Nenhum desses funcionou =(

Criado 22 de maio de 2006
Ultima resposta 22 de mai. de 2006
Respostas 2
Participantes 2