Erro com Collections: java.util.ConcurrentModificationException  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
RamonSilva
Entusiasta Java
[Avatar]

Membro desde: 23/11/2004 08:54:15
Mensagens: 17
Offline

Olá Pessoal!

Estou com um problema em trabalhar com collections em um trecho do meu aplicativo. Segue o código



Segue abaixo o código que tem em Despesa.addParcelaDespesa(ParcelaDespesa);



Já tentei implementar em ParcelaDespesa a interface Cloneable e sobreescrever o clone. Não funcionou também

Segue stacktrace lancado;



Qualquer ajuda será bem-vinda!

Abraços

Ramon
[MSN] [ICQ]
Fabricio Cozer Martins
GUJ Ranger
[Avatar]

Membro desde: 08/05/2004 10:22:03
Mensagens: 935
Localização: Salvador/Brasil
Offline

Esse erro é gerado qdo vc tenta modificar o conteudo de uma coleção no loop do iterator.

Fabrício Cozer Martins
Analista de Sistemas
Bacharel em Ciência da Computação da UFBa
Sun Certified Programmer for Java 2 Platform 1.4
Sun Certified Web Component Developer for J2EE 1.4
[MSN] [ICQ]
RamonSilva
Entusiasta Java
[Avatar]

Membro desde: 23/11/2004 08:54:15
Mensagens: 17
Offline

Fabrício Cozer Martins wrote:Esse erro é gerado qdo vc tenta modificar o conteudo de uma coleção no loop do iterator.


Obrigado pela resposta!

Isso eu já sei. O que eu quero saber é onde está sendo alterado o item da collection? E qual outra estratégia de implementação que eu posso usar para sanar esse problema.

Alguma sugestão?

Abs

Ramon
[MSN] [ICQ]
Fabricio Cozer Martins
GUJ Ranger
[Avatar]

Membro desde: 08/05/2004 10:22:03
Mensagens: 935
Localização: Salvador/Brasil
Offline

vc pode usar a estratégia 'separate collections', onde você trabalha com duas coleções onde uma vc vai adicionando elementos da outra que vc deve tratar.


Fabrício Cozer Martins
Analista de Sistemas
Bacharel em Ciência da Computação da UFBa
Sun Certified Programmer for Java 2 Platform 1.4
Sun Certified Web Component Developer for J2EE 1.4
[MSN] [ICQ]
RamonSilva
Entusiasta Java
[Avatar]

Membro desde: 23/11/2004 08:54:15
Mensagens: 17
Offline

Fabrício Cozer Martins wrote:vc pode usar a estratégia 'separate collections', onde você trabalha com duas coleções onde uma vc vai adicionando elementos da outra que vc deve tratar.



Obrigado! Eu usei a estratégia que voce me indicou e funcionou. Mas não gostei de ter que usar duas collections para uma operação tão simples. Será que isso não é um problema de thread? Já usei o Collections.synchronizedList(minhalista) e deu o mesmo erro.
Não sei oque pode ser.

Abraços!

Ramon
[MSN] [ICQ]
takeshi10
Java Ninja

Membro desde: 08/08/2004 23:05:25
Mensagens: 254
Localização: Brasil
Offline

a moral da historia eh: nao modifique a collection durante a iteracao, pq pode dar problemas - mesmo com synchronized, como vc esta modificando a lista durante a iteracao no mesmo thread, a excecao eh lancada...
a sugestao dada eh a mais simples mesmo

takeshi
louds
Moderador
[Avatar]

Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline

ConcurrentModificationException não diz respeito nenhum a modificação entre threads.

Essa exception é lançada sempre que você fizer alguma modificação estrutural em uma collection sem ser pelo iterator. A solução é você realizar as alterações pelo iterator ou usar colections separadas.

http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda
[ICQ]
takeshi10
Java Ninja

Membro desde: 08/08/2004 23:05:25
Mensagens: 254
Localização: Brasil
Offline

pois eh, mas muitas pessoas jah erraram (eu, inclusive) achando que a collection estava sendo modificada por outra thread ou coisa parecida...
pelo menos para mim a excecao eh um pouco sugestiva nesse sentido, alem do javadoc mencionar:

For example, it is not generally permissible for one thread to modify a Collection while another thread is iterating over it


takeshi
Rulldra
HelloWorld
[Avatar]

Membro desde: 19/09/2006 11:23:04
Mensagens: 11
Localização: Brasília, DF
Offline

Eita... eu estou com o mesmo problema que ele (ou ao menos parecido) e não sei como resolver. Se puderem me explicar passo-a-passo por favor, eu ficaria muito agradecido!

Segue abaixo parte do meu código:


Sendo que lá em cima, no início do código, eu criei:


O erro é o mesmo ( java.util.ConcurrentModificationException ) e está marcado nessa linha : p2 [i] = (Produto) busca.next();


Dêem-me uma mãozinha, pessoal. Tou precisando disso pra ontem!! =/
[Email] [MSN]
malsan
JavaTeenager

Membro desde: 14/12/2007 16:20:02
Mensagens: 160
Offline

Outro Collection? É muito Collection! Eu faço assim:
danilloh
Thread.start()

Membro desde: 14/12/2006 09:32:41
Mensagens: 27
Offline

Mais uma opção...



ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 19680
Localização: Curitiba/PR
Online

Será que o pessoal de 2006 já não tinha percebido essas duas soluções?

@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
f-schmitt
JavaChild
[Avatar]

Membro desde: 29/07/2006 08:25:22
Mensagens: 116
Localização: Gravatal
Offline

Estava passando pelo mesmo problema,pirando achando que era problemas de thread, to usando sockets e thread, mas o --i; resolveu meu problema!

valeu pessoal!

Java, Clarion, HB++, PostgreSQL
[MSN]
seudito
Thread.start()
[Avatar]

Membro desde: 14/09/2009 15:37:52
Mensagens: 31
Offline

--i me salvou tb... tks!

"Roses are red, apples are ripe, if you don't import, you'll just have to type"
[Email] [MSN]
zepspaiva
Smalltalk

Membro desde: 21/03/2010 19:03:06
Mensagens: 1
Offline

Tive o mesmo problema quando eu tentava assim:



Resolvi da seguinte forma:

[MSN]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team