"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

java.util.Collections.synchronizedList: remove object, keep 'slot'

wergor 16.11.2016 - 16:42 2147 4
Posts

wergor

connoisseur de mimi
Avatar
Registered: Jul 2005
Location: graz
Posts: 4030
ich habe eine java.util.Collections.synchronizedList mit K objekten und N threads. ein thread n greift auf ein element mit index k zu, wobei beliebig viele threads auf den selben index k zugreifen könnten. auf jedes element darf aber zu jedem zeitpunkt nur von 1 thread zugegriffen werden, und die reihenfolge der elemente in der liste soll konstant bleiben (also kein remove() ... add()). wie löse ich das? gibts eine thread-safe möglichkeit, ein element in der liste z.b. mit null zu ersetzen?

Denne

Here to stay
Avatar
Registered: Jan 2005
Location: Germany
Posts: 2801
synchronizedList ist von Haus aus "thread safe" was Operationen auf dieser angeht. Einziges Problem ist, wenn du parallel in einem anderen Thread über die Liste iterierst (siehe hier).

@ Reihenfolge soll konstant bleiben: Du kannst eine ArrayList nehmen und, anstatt remove() und add(), set(index, element) aufrufen. element kann hierbei auch null sein.

wergor

connoisseur de mimi
Avatar
Registered: Jul 2005
Location: graz
Posts: 4030
danke, das werde ich versuchen.

wergor

connoisseur de mimi
Avatar
Registered: Jul 2005
Location: graz
Posts: 4030
funktioniert :)

Denne

Here to stay
Avatar
Registered: Jan 2005
Location: Germany
Posts: 2801
Freut mich :)
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz