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