Witam,
jestem w trakcie pisania aplikacji klient/serwer opartej na RMI. Na serwerze przechowuje w liscie dodane przed administratora produkty, ktore chce takze usuwac. Niestety kiedy chce usunac obiekt z listy wyrzuca mi wyjątek: java.util.ConcurrentModificationException
Tworze przykładowe 2 produkty, kazdy podczas tworzenia ma przypisywane autoID i wg tego ID chce usuwac produkty:
Product p1 = new Product( "p1", "pr1", 2.5, 10 );
Product p2 = new Product( "p2", "pr2", 3.7, 8 );
Tak wyglada zdalna metoda do usuwania tych produktów:
@Override
public void removeProduct( int productID ) throws RemoteException {
for( Product product: productList ) {
if( product.getProductID() == productID ) {
productList.remove( product );
}
}
throw new RemoteException( "Nie mozna usunac produktu o ID: " + productID );
}
Po probie usuniecia np produktu "p1" o ID=0 dostaje:
java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(Unknown Source)
at java.util.ArrayList$Itr.next(Unknown Source)
at model.remoteObject.Shop.removeProduct(Shop.java:66)
gdzie kompilator w 66 linii pokazuje na początek pętli for:
for( Product product: productList ) {
Nie rozumiem na czym polega tutaj problem ani jak go rozwiązać, czy ktoś byłby w stanie coś zaradzić?