Since JDK 18 some implementations of InputStream.transferTo, namely 
FileInputStream and ChannelInputStream, offload work to lower layers using NIO 
channels. This provides shorter execution time and reduced resource 
consumption. Unfortunately, this effect is prevented once the input stream 
itself is wrapped by a SequenceInputStream. While compared to other 
InputStreams the SequenceInputStream is a rather edge case (e. g. used to merge 
two files into one), nevertheless it makes sense to get rid of this obstacle 
simply by implementing transferTo (e. g. by allowing to offload the file merge, 
or parts of the file merge, to the operating system). As a result, more 
existing applications will experience the offloading-improvements made by JDK 
18.

To provide enhanced performance to existing applications, it makes sense to 
address this impediment: SequenceInputStream.transferTo should be implemented 
in a way that iteratively calls transferTo on each enumerated InputStream of 
the SequenceInputStream in ordered sequence.

-------------

Commit messages:
 - SequenceInputStream.transferTo

Changes: https://git.openjdk.org/jdk/pull/11248/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=11248&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8297298
  Stats: 37 lines in 2 files changed: 19 ins; 7 del; 11 mod
  Patch: https://git.openjdk.org/jdk/pull/11248.diff
  Fetch: git fetch https://git.openjdk.org/jdk pull/11248/head:pull/11248

PR: https://git.openjdk.org/jdk/pull/11248

Reply via email to