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

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/java-util-collections-synchronizedlist-remove-object-keep-slot_247570/page_1 - zur Vollversion wechseln!


wergor schrieb am 16.11.2016 um 16:42

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 schrieb am 16.11.2016 um 18:33

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 schrieb am 17.11.2016 um 22:55

danke, das werde ich versuchen.


wergor schrieb am 21.11.2016 um 09:43

funktioniert :)


Denne schrieb am 21.11.2016 um 09:53

Freut mich :)




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025