Amigos estou com quase o mesmo problema.
O problema é que não estou modificando a lista original em momento algum, não vejo onde está o erro, pediria por favor se alguém puder me dar alguma dica de como resolver isso.
Vou passar o código e a exception.
Código:
[code]Thread t2 = new Thread() {
@Override
public void run() {
getDadosOrdemStandard(codigoOs);
beanOS = new OrdemServicoDAO(c).getOrdemServico(codigoOs, beanOS);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
if (config.isOSsemBaixa()) {
List listaServico = beanOS.getListaServicos();
Iterator it = listaServico.iterator();
boolean fechou = false;
while (it.hasNext()) {
Servico servico = (Servico) it.next(); // O erro está nessa linha: 940
Date dataHoraBaixaProducao = new Date();
try {
sql = "INSERT INTO ORDEM_BAIXA(" +
" CODIGO_ORDEM," +
" DATA_BAIXA," +
" HORA_BAIXA, " +
" QUANTIDADE_PRODUZIDA, " +
" QUANTIDADE_PERDIDA, " +
" FUNCIONARIO, " +
" CODIGO_SERVICO) " +
"VALUES(?, ?, ?, ?, ?, ?, ?);";
int idx = 0;
ps = c.prepareStatement(sql);
ps.setObject(++idx, codigoOs);
ps.setObject(++idx, new java.sql.Date(dataHoraBaixaProducao.getTime()));
ps.setObject(++idx, new java.sql.Time(dataHoraBaixaProducao.getTime()));
ps.setObject(++idx, servico.getQuantidade());
ps.setObject(++idx, 0.0);
ps.setObject(++idx, Global.userBean.getNome());
ps.setObject(++idx, servico.getCodigo());
ps.execute();
sql = "UPDATE CONTROLE_ORDEM SET " +
" FOLHAS_PERDIDAS = ?, " +
" VALOR_FINAL = ?," +
" QUANTIDADE_PRODUZIDA=? " +
"WHERE " +
" CODIGO_ORDEM = ? AND " +
" CODIGO_SERVICO = ?";
idx = 0;
ps = c.prepareStatement(sql);
ps.setObject(++idx, 0.0);
ps.setObject(++idx, servico.getValorCalculado());
ps.setObject(++idx, servico.getQuantidade());
ps.setObject(++idx, codigoOs);
ps.setObject(++idx, servico.getCodigo());
ps.executeUpdate();
} catch (SQLException ex) {
Lib.Warning(frame, "Adicionando Baixa na OS", ex.getMessage() + "\n\n" + T.getStackTrace(ex.fillInStackTrace()), 1);
}
fechou = true;
} // while da LISTA dos Servicos
}
}
});
}
};
t2.start();
[/code]
A Excetpion que ocorre:
java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(Unknown Source)
at java.util.AbstractList$Itr.next(Unknown Source)
at com.sikgraf.ui.OrcamentoOrdemServicoUI$17$1.run(OrcamentoOrdemServicoUI.java:940)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at com.sikgraf.lib.contextmenu.MyEventQueue.dispatchEvent(MyEventQueue.java:29)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Obrigado
Francisco