Wpis z mikrobloga

Mirki wiem że rozkręcamy właśnie nową aferę bo z Żubrem wbili się chamko w tło, no ale może ktoś z #java #programowanie jednak będzie w stanie pomóc.
Mam pierwszy raz w życiu ten problem.
Przechowuję dwuwymiarową ArrayListę pewnych obiektów, powiedzmy że wygląda to tak:
ArrayList> I w zasadzie wszystko ok poza tym, że kiedy chcę iterować po obiektach i coś tam na nich robić dostaję ConcurrentModificationException. Cała aplikacja działa w Swingu. Wiem że powinienem synchronizować kolekcję, ale nie bardzo wiem w jaki sposób zrobić to poprawnie.
Kiedy zrobiłem blok synchronizowany:
synchronized(collection) {
...
}
No to dalej dostaję exceptiona. Kiedy zrobię całą metodę jako synchronized to też to samo się dzieje.
Ktoś/coś podpowie jak to ruszyć?
Ewentualnie może zmiana kolekcji na synchronizowaną normalnie z zachowaniem funkcjonalności dodawania/odejmowania ArrayList tak jak tutaj to mam?

#java #programowanie #swing
  • 24
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

W systemach gdzie potrzebna jest wydajnosc, nie można przesadzać z takim podejściem "ee", potem konczysz z masą pięknego, czystego kodu na streamach i opcjonalach, i bez Stanów, ale grać sie nie da, to jednak zostawia narzut.


@GotoFinal: Co jakiś czas zwija się stany.
  • Odpowiedz
@GotoFinal: No spłaszcza. (Zapomniałem, jak się to nazywa.) Ze zamiast stanu wyjściowego + milion diffów, wyznacza się nowy stan wyjściowy. Coś jak różnica między pełnym snapshotem a backupem przyrostowym.
  • Odpowiedz