[b84 regression?] stream.parallel()/sequential() return the stream itself when they are not expected to (original) (raw)
Dmitry Bessonov dmitry.bessonov at oracle.com
Fri Apr 5 08:40:49 PDT 2013
- Previous message: hg: lambda/lambda/jdk: Mangler updates from Kumar.
- Next message: [b84 regression?] stream.parallel()/sequential() return the stream itself when they are not expected to
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Consider the following code sample:
Stream stream = Arrays.asList("a", "b", "c").stream(); out.println("stream = " + stream); out.println("stream.isParallel() = " + stream.isParallel()); out.println("stream.parallel() = " + stream.parallel()); out.println("stream.parallel() = " + stream.parallel()); out.println("stream.parallel().isParallel() = " + stream.parallel().isParallel());
With b83 a "java.lang.IllegalStateException: Stream is already linked to a child stream" is thrown on attempt to double link a stream.
With b84 the output is quite unexpected:
stream = java.util.stream.ReferencePipeline$Head at 1f3c5b5 stream.isParallel() = false stream.parallel() = java.util.stream.ReferencePipeline$Head at 1f3c5b5 stream.parallel() = java.util.stream.ReferencePipeline$Head at 1f3c5b5 stream.parallel().isParallel() = true
If it's not a regression then it looks like the spec for java.util.stream.BaseStream.parallel() deserves to be updated.
The same issue takes place with parallel->sequential stream transformation so the spec for sequential() needs an update too.
-Dmitry
- Previous message: hg: lambda/lambda/jdk: Mangler updates from Kumar.
- Next message: [b84 regression?] stream.parallel()/sequential() return the stream itself when they are not expected to
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]