AWS SDK for S3中的TransferManager是否正在执行异步I / O?

时间:2014-09-29 19:25:07

标签: java asynchronous amazon-web-services amazon-s3 asyncfileupload

我一直在阅读亚马逊AWS SDK中用于进行S3上传的TransferManager,所提供的API允许非阻塞使用,但是我不清楚底层实现是否实际执行异步I / O.

我在source-code of TransferManager上做了一些阅读,我无法理解所提供的ExecutorService中的帖子是否被阻止。

我的问题是,如果这个管理器实际上在没有阻塞执行程序的情况下执行异步I / O,那么我可以使用应用程序的全局线程池,这是用于CPU绑定的东西。那么这实际上是在做异步I / O吗?

1 个答案:

答案 0 :(得分:11)

在分析并尝试理解SDK的源代码后,我得出的结论是,TransferManager不能异步工作,因为它背负着AmazonS3Client.putObject这样的调用,虽然没有阻塞线程本身,但是进入循环直到http请求完成,从而阻止了处理线程池队列的进展。