我一直在阅读亚马逊AWS SDK中用于进行S3上传的TransferManager,所提供的API允许非阻塞使用,但是我不清楚底层实现是否实际执行异步I / O.
我在source-code of TransferManager上做了一些阅读,我无法理解所提供的ExecutorService
中的帖子是否被阻止。
我的问题是,如果这个管理器实际上在没有阻塞执行程序的情况下执行异步I / O,那么我可以使用应用程序的全局线程池,这是用于CPU绑定的东西。那么这实际上是在做异步I / O吗?
答案 0 :(得分:11)
在分析并尝试理解SDK的源代码后,我得出的结论是,TransferManager
不能异步工作,因为它背负着AmazonS3Client.putObject
这样的调用,虽然没有阻塞线程本身,但是进入循环直到http请求完成,从而阻止了处理线程池队列的进展。