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

Ale*_*lcu 11 java asynchronous amazon-s3 amazon-web-services asyncfileupload

我一直在亚马逊的AWS开发工具包中阅读有关TransferManager的上传,所提供的API允许非阻塞使用,但是我不清楚底层实现是否实际上是异步I/O.

对TransferManager源代码做了一些阅读,我无法理解提供的线程ExecutorService是否被阻止.

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

Ale*_*lcu 13

在分析并尝试理解SDK的源代码之后,我得出的结论是,TransferManager不能异步工作,因为它捎带AmazonS3Client.putObject和这样的调用,而不是阻塞线程本身,进入循环直到http请求是已完成,从而阻止了处理线程池队列的进度.

  • @DGolberg不,不是,博客文章没有声明,除了我在几个小时检查源代码和进行分析后得到证据.TransferManager的API是非阻塞的,因为它将工作卸载到已配置的线程池,但该线程池中的线程阻塞,因此无法执行任何其他操作.我可能会写一篇关于它的文章.谢谢你的投票,没有必要. (7认同)