java - 从同一个 Storage 对象创建的 Insert 对象可以并发执行吗?

标签 java google-api-java-client google-cloud-storage google-api-client

我正在使用 Google 的 Java API 来处理 Google 云存储 (GCS)。

我有多个工作线程将对象插入到 GCS 中。目前他们共享一个共同的 Storage实例,并使用它来创建 Storage.Object.Insert实例:

synchronized(LOCK)
{
    insertObject = mStorage.objects().insert(mBucketName, objectMetadata, mediaContent);
}

他们稍后在 Insert 实例上调用 execute(),将文件上传到 GCS。

insertObject.execute();

我的问题是我可以在不同线程中同时运行 execute() 调用吗? Insert 对象对于该线程是唯一的,但是创建它的 Storage 对象在线程之间共享,所以我担心这可能会导致问题。

提前致谢!

最佳答案

是的! :)

也就是说,假设您使用的 HttpTransport 实例是线程安全的,那么共享存储实例应该是线程安全的。不安全的是在没有提供额外锁定的情况下跨线程共享请求类本身或其响应。但只要每个线程都使用自己的请求类,它是安全的,实际上建议跨线程共享存储和实例。

注意:我是 google-api-java-client 项目的所有者

关于java - 从同一个 Storage 对象创建的 Insert 对象可以并发执行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16158644/

相关文章:

google-cloud-platform - 无法推送到 Google Container Registry(访问被拒绝)

java - 如何使用 Java 在 Selenium Webdriver 中输入类型不是 'File' 时上传照片

java - 这是初始化对象数组的正确方法吗?

jvm - Java java.lang.Integer类中的代码注释 'HD, Figure'是什么意思?

java - Google Analytics 3.0 授权流程

java - Google Cloud Endpoints 错误由 : java. lang.IllegalArgumentException : expected primitive class, 引起,但得到

java - Google Drive API v3 - 在 Java 中的文件夹内创建文件夹

python - 尝试在 Google Cloud Storage 上上传 pdf 文件时出现 HttpError 400

python - 使用 Google App Engine (Python) 将文件上传到 Google Cloud Storage

java - 将 Lombok 与 Java 8 可选字段一起使用。如何使用构建器填充字段