Параллельный Spliterator
Какой нужен флаг в пайплайне для сплитератора, чтобы интерфейс java.util.stream.Sink отработал метод cancellationRequested()? Т.е. у нас есть такое вот условие в коде AbstractPipeline
Какие нужны флаги, чтобы добраться до метода copyIntoWithCancel() в котором и будет отработка cancellationRequested()? Флаги Spliterator.DISTINCT | Spliterator.SORTED | Spliterator.ORDERED | Spliterator.SIZED
не работают и он просто не вызывает метод cancellationRequested().
Ответы (1 шт):
Автор решения: RSalnikov
→ Ссылка
Если кому-то нужно, то реализацию метода cancellationRequested() переопределять нельзя. Он вызывается автоматически в двух условиях:
- Использование
StreamSupport.doubleStream, StreamSupport.intStream, StreamSupport.longStream
. - Для того, чтобы он отрабатывал в
StreamSupport.stream
, обязательно нужно вызывать методы стримаfind, gather, match, slice, while