У меня есть Актер, который по своей сути поддерживает список объектов. Он имеет три основных операции: добавление, обновление и удаление (где иногда вызывается метод удаления из метода add, но это не относится) и работает с одной коллекцией. Очевидно, что к этому списку обращений обращаются одновременно, а добавление и удаление вызовов чередуют друг друга.
В моей первой версии использовался ListBuffer, но я где-то читал, что он не предназначен для одновременного доступа. Я не получил исключения одновременного доступа, но я заметил, что поиск и удаление объектов из него не всегда работает, возможно, из-за параллелизма.
Я уже наполовину переписывал его, чтобы использовать Var List, но удаление элементов из неизменяемого List по умолчанию в Scala немного затруднительно - и я сомневаюсь, что он подходит для одновременного доступа.
Итак, основной вопрос: какой тип коллекции я должен использовать в ситуации одновременного доступа и как он используется?
(Возможно, второстепенно: Actor на самом деле является многопоточным объектом или это просто моя неправильная концепция, и он обрабатывает сообщения по одному в одном потоке?)
(Третичный: в Scala, какой тип коллекции лучше всего подходит для вставок и произвольного доступа (удаление / обновление)?)
Редактировать: Для добрых респондентов: Извините за поздний ответ, я делаю неприятную привычку: выкидывать вопрос в SO или списки рассылки, а затем переходить к следующей проблеме, забывая на данный момент исходную.