Hello, Stuart! On Tue, Aug 4, 2015 at 5:09 AM, Stuart Marks <stuart.ma...@oracle.com> wrote:
> Regarding Stream.concat, it may be that, today, changes to the > sequential/parallel execution mode aren't propagated to the streams being > concatenated. But is that something inherent to the specification of > concatenation, or is it something that might change in the future? It's > currently unspecified, so adding a clarification really sounds more like > changing the specification to reflect the current implementation, which I'd > prefer not to do. > That's fine. In this case it's probably should be explicitly mentioned something like "note that further change of the stream mode from parallel to sequential and vice versa is *not guaranteed* to propagate to the source streams". It would still be better than not speaking about this at all. Regarding the default implementations of takeWhile/dropWhile, again, today, > they don't propagate the execution mode upstream. But is this just a bug? > Granted the API for doing so isn't obvious, but isn't this something that > could just be fixed? > It would be nice if it can be fixed, but given the current API I see no easy way to do this. Probably Paul can comment on this. With best regards, Tagir Valeev. > > s'marks > > > On 7/31/15 9:36 PM, Tagir Valeev wrote: > > Hello! > > Probably additional clarifications should be added about Stream.concat > method (and primitive analogs). Currently it's unclear that the resulting > stream is actually the new pipeline, which do not propagate parallel status > to the concatenated streams. See also my StackOverflow question: > http://stackoverflow.com/q/30464397/4856258 > > Also things become more complex in JDK9 with the introduction of > takeWhile/dropWhile. For JDK Stream implementation these two are normal > intermediate operations, but if it happens that user has his own stream > implementation or delegate to JDK stream, then the default > takeWhile/dropWhile implementation is used which is actually starts new > pipeline at given point, so further changes of parallel/sequential mode are > not propagated to the initial pipeline. In my StreamEx library I call such > operations as "quasi-intermediate", and explicitly clarify this point. See > the JavaDoc: > > http://amaembo.github.io/streamex/javadoc/javax/util/streamex/package-summary.html#StreamOps > Probably some clarification should be added to @implSpec section of > takeWhile/dropWhile. > > With best regards, > Tagir Valeev. > > On Sat, Aug 1, 2015 at 3:19 AM, Stuart Marks <stuart.ma...@oracle.com> > wrote: > >> Hi all, >> >> The sequential() and parallel() methods on a stream set the execution >> mode for the entire pipeline. Unfortunately this isn't particularly clear >> from the documentation. This has been a recurring question. Please review >> this change to the java.util.stream package documentation to help clarify >> this point. >> >> I've also added a couple anchor tags that were missing from various >> sections. >> >> This is intended to be a purely editorial change, not a specification >> change. >> >> Bug: >> >> https://bugs.openjdk.java.net/browse/JDK-8132800 >> >> Webrev: >> >> http://cr.openjdk.java.net/~smarks/reviews/8132800/webrev.0/ >> >> Thanks, >> >> s'marks >> > > >