Использует ли поток ХАРАКТЕРИСТИКИ источника потока? - PullRequest
0 голосов
/ 17 сентября 2018

из этого вопроса

сообщение сплитератора, IMMUTABLE или CONCURRENT, гарантированно никогда не вызовет исключение ConcurrentModificationException.Конечно, CONCURRENT исключает SIZED семантически, но это не имеет никакого отношения к клиентскому коду.

На самом деле, эти характеристики не используются ни для чего в Stream API, поэтому их непоследовательное использование никогда не приведет к получениюгде-то заметил.

Это также объясняет, почему каждая промежуточная операция очищает характеристики CONCURRENT, IMMUTABLE и NONNULL: реализация Stream не использует их, а ее внутренние классы, представляющие состояние потока, не поддерживаютих.

если поток не использует ХАРАКТЕРИСТИКИ из источника, то как поток работает параллельно?поток полностью игнорирует характеристики источника потока?

из этого вопроса Сборщик не знает, что я использую параллельный сбор, предоставленный Поставщиком, поэтому характеристики не выводятся из типа контейнера коллектора

  1. при каких условиях потоковый API учитывает характеристики?
  2. какая операция сбрасывает какие характеристики?

1 Ответ

0 голосов
/ 17 сентября 2018

То, что вы просите , возможно . Правильная формулировка в этих ответах будет означать, что в данный момент эти свойства игнорируются, в некотором будущем они могут быть введены / прочитаны / использованы реализацией потока.

Также в ваших комментариях вы говорите, что:

someTreeSet().stream()
         .sorted()
         .... some other operations 

Позвонит sorted. Это просто неправда, в этом случае эта операция не будет вызвана. Это один флаг потока, который не игнорируется и не внедряется в реализацию потока с помощью TreeSet.

...