Hi zusammen,
ich stehe gerade vor einem Problem und möchte eure Meinung dazu hören.
Ich besitze eine Liste auf die von einem GUI-Thread und von einem oder mehreren nicht-GUI-Threads aus drauf zugegriffen wird.
Aus dieser Liste können Objeckte entfernt werden. Da könnt ihr euch ja vorstellen was passiert.
Welche Lösungen habe ich:
1. alle Methoden die auf die Liste zugreifen synchronized machen
2. immer ein deep-copy der Liste erstellen, auf diese dann alle Threads drauf zugreifen lassen
Probleme der Lösungen:
1. Mir wurde geraten nicht überall einfach synchronized zu machen, aber warum? (deadlocks?)
2. - man arbeitet evtl. auf einem bereits gelöschten Objekt der Liste
- man legt immer neue Listen an --> schlechte performanz und viel speicher
Könnt ihr mir vielleicht was dazu sagen?
ich stehe gerade vor einem Problem und möchte eure Meinung dazu hören.
Ich besitze eine Liste auf die von einem GUI-Thread und von einem oder mehreren nicht-GUI-Threads aus drauf zugegriffen wird.
Aus dieser Liste können Objeckte entfernt werden. Da könnt ihr euch ja vorstellen was passiert.
Welche Lösungen habe ich:
1. alle Methoden die auf die Liste zugreifen synchronized machen
2. immer ein deep-copy der Liste erstellen, auf diese dann alle Threads drauf zugreifen lassen
Probleme der Lösungen:
1. Mir wurde geraten nicht überall einfach synchronized zu machen, aber warum? (deadlocks?)
2. - man arbeitet evtl. auf einem bereits gelöschten Objekt der Liste
- man legt immer neue Listen an --> schlechte performanz und viel speicher
Könnt ihr mir vielleicht was dazu sagen?