Ank*_*ngh 7 java multithreading amazon-s3
我正在使用此代码在S3上上传目录。
TransferManager transferManager = new TransferManager(s3client);
MultipleFileUpload uploaded = transferManager.uploadDirectory(BUCKET_NAME, "DirectoryName", new File(uploadDirectory), true);
Run Code Online (Sandbox Code Playgroud)
将目录上载到Amazon S3存储桶时,出现以下异常
com.amazonaws.SdkClientException: Upload canceled
at com.amazonaws.services.s3.transfer.internal.UploadMonitor.call(UploadMonitor.java:159)
at com.amazonaws.services.s3.transfer.internal.UploadMonitor.call(UploadMonitor.java:47)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Run Code Online (Sandbox Code Playgroud)
此异常通常在100次尝试中发生10次左右
注意-上面的代码在多线程环境中使用相同的
s3client对象执行
非常感谢!
我在 Java Amazon Sdk 中进行研发时遇到的上述问题的解决方案。而不是创建不同的TransferManager每一个线程实例,如果您使用的是相同的多个线程共享相同的实例AmazonS3Client。
它不会引起任何问题,因为它是线程安全的对象,问题也解决了。