2017-05-12 60 views

回答

1

的AWS SDK中提供的所有憑據提供是線程安全的,包括默認證書鏈及其所代表的人。

在憑證提供程序(例如,憑證提供程序鏈setReuseLastProvider)上使用變異方法並不總是作用於易變變量,所以鼓勵在從多個線程使用憑證提供程序之前全面配置憑證提供程序。

+0

對,對。謝謝@millems。你能否澄清你的意思是「完全配置」? 凱文·穆林向我指出,如果'getCredentials(顯示)'在此行之前再次呼籲:https://github.com/aws/aws-sdk-java/blob/master/aws-java-sdk-core/src /main/java/com/amazonaws/auth/AWSCredentialsProviderChain.java#L121,那麼代碼可能會重新遍歷整個鏈。 – yegeniy

+1

在開始使用它之前,最好調用提供者上的任何'set *'方法。 'lastUsedProvider'是相當不可預測的,因爲該字段不是易失性的,所以一個線程可以在本地線程緩存它的值,並且沒有鎖定它。 'lastUsedProvider'是一個盡力而爲的領域,所以整個鏈可以迭代多次。防止這種情況效率相對較低,並且多次遍歷鏈的成本不會過高。 – millems