3

我正在使用Google的Java API與Google雲端存儲(GCS)配合使用。可以同時執行從同一個存儲對象創建的插入對象嗎?

我有多個工作線程插入對象到GCS中。目前,他們都有一個共同的Storage實例,並用它來創建Storage.Object.Insert實例:

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

他們再打​​在Insert實例,將文件上載到GCS。

insertObject.execute(); 

我的問題是我可以在不同線程中同時運行​​調用嗎? Insert對象對於該線程是唯一的,但它創建的Storage對象在線程之間共享,所以我擔心這可能會導致問題。

在此先感謝!

+0

我希望這個工作得很好,但我會看看我能不能從別人誰知道更多關於尋找更權威的答案java api客戶端。 – fejta 2013-05-18 22:37:33

+0

[此問題](https://code.google.com/p/google-api-java-client/issues/detail?id=144)使我相信它是線程安全的。 – jterrace 2013-05-18 22:56:42

+0

感謝評論傢伙,所以它看起來像是安全的假設它是線程安全的。 – Felix 2013-05-19 20:58:33

回答

5

是的! :)

也就是說,假設您使用的HttpTransport實例是線程安全的,那麼擁有共享存儲實例應該是線程安全的。不安全的是在線程間共享請求類本身或其響應,而無需提供額外的鎖定。但只要每個線程都使用自己的請求類,它就是安全的,實際上建議跨線程共享存儲和實例。

注:我是谷歌的API-Java的客戶端項目的所有者

+0

太棒了,歡呼Yaniv! – Felix 2013-05-21 05:24:33

相關問題