ConcurrentSkipListMap без блокировки со сложным объектом в качестве значения, содержащего список - PullRequest
0 голосов
/ 12 июня 2019

Я занимаюсь разработкой программы, в которой у меня есть несколько потоков, обращающихся к карте, хранящейся в классе 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

Спасибо.

...