Fel*_*lix 3 java google-api-java-client google-api-client google-cloud-storage
我正在使用Google的Java API来使用Google云端存储(GCS).
我有多个工作线程将对象插入GCS.目前,它们共享一个公共Storage实例,并使用它来创建Storage.Object.Insert实例:
synchronized(LOCK)
{
insertObject = mStorage.objects().insert(mBucketName, objectMetadata, mediaContent);
}
Run Code Online (Sandbox Code Playgroud)
后来,他们打电话execute()的Insert情况下,将文件上载到GCS.
insertObject.execute();
Run Code Online (Sandbox Code Playgroud)
我的问题是我可以execute()在不同的线程中同时运行调用吗?该Insert对象对于该线程是唯一的,但Storage它创建的对象是在线程之间共享的,所以我担心这可能会导致问题.
提前致谢!
是! :)
也就是说,假设您使用的HttpTransport实例是线程安全的,那么拥有共享存储实例应该是线程安全的.不安全的是共享请求类本身或跨线程的响应,而不提供您提供的额外锁定.但只要每个线程使用自己的请求类,它就是安全的,事实上建议跨线程共享存储和实例.
注意:我是google-api-java-client项目的所有者