title: S3 multithreaded download library
body: <p>I have a java application that needs to do fast and reliable downloads from Amazon's S3.  Ideally, I'd use something like the AWS SDK's TransferManager ( <a href="http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/transfer/TransferManager.html" rel="nofollow">http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/transfer/TransferManager.html</a> ), except I'd like to process the data in a streaming fashion, without having to stage all the downloaded data on local disk.  </p>
  
  <p>Ideally, the library would have an interface similar to AmazonS3#getObject(), but the implementation would be faster and more robust.  Even better, the library would support pre-fetching for multiple S3 objects: I could give it a list of objects that I want to download eventually, then consume a sequence of streams for each object quickly.  It's ok if the library has to use a lot of RAM to do the pre-fetching.</p>
  
  <p>Does anybody know of a library that has some/all of these features?</p>