Я занимаюсь разработкой программы, в которой у меня есть несколько потоков, обращающихся к карте, хранящейся в классе Problem
.
Эта карта для «значения» содержит объект (Slot
), содержащий имя и List
экземпляров Car
.
Итак, мой вопрос:
Так как первая карта, к которой обращаются различные потоки, является поточно-ориентированной, понадобится ли мне потокобезопасный список для списка внутри Slot
или я в безопасности с ArrayList
?
Обратите внимание, что Car
является AtomicReference
и является критической областью, где я использую compareAndSet()
вкл.
public class Problem {
ConcurrentSkipListMap<Integer, Slot> slots;
//...
}
public class Slot {
private String name;
List<AtomicReference<Car>> cars; // does this need to be a thread safe list?
//...
}
public class Car {
//...
}
Простая диаграмма, которая показывает проблему:
![enter image description here](https://i.stack.imgur.com/RYXTS.png)
Спасибо.