Является ли поток CircularArray Android SDK безопасным?

Этот вопрос касается android.support.v4.util. Круговой массив.

Я рассматриваю возможность использования CircularArray для передачи данных из одного потока в другой. Каждый элемент представляет собой массив типа short[].

  • Можно ли одновременно безопасно добавлять и извлекать массив?
  • Могу ли я быть уверен, что когда я пытаюсь извлечь элемент, он был добавлен в массив атомарно?
  • Могу ли я безопасно очистить массив от определенного потока?

В документации для CircularArray ничего не говорится о безопасности потоков, но мне интересно, есть ли общие предположения, указанные где-либо в документации SDK, которые применимы к нему.


person orodbhen    schedule 02.08.2017    source источник
comment
Это поможет вам понять разницу между потокобезопасностью и доступом к данным массива. Короче говоря, массивы потокобезопасны, но у вас нет гарантии, что то, что вы читаете, является последним значением, установленным в массиве. stackoverflow.com/questions/1132507/java-array-thread-safety< /а>   -  person anemomylos    schedule 02.08.2017


Ответы (1)


Если это не указано явно, классы платформы Android не являются потокобезопасными. Так что ответ на ваши вопросы нет.

Вам лучше использовать очередь из java.util.concurrent package для реализации вашей межпоточной связи.

person r0the    schedule 02.08.2017
comment
Спасибо. Похоже, что ConcurrentLinkedQueue — это то, что я ищу. - person orodbhen; 02.08.2017