将AWS Java SDK客户端对象声明为静态以供并发使用是否安全?

将AWS Java SDK客户端对象声明为静态以供并发使用是否安全?,java,amazon-web-services,Java,Amazon Web Services,与AWS Java SDK同时使用同一客户机对象处理多个请求是否安全。例如,如果我有一个web服务器同时处理多个请求,并且一个或多个请求需要访问DynamoDB,那么使用静态访问器方法(例如 public class DynamoDBManager { private static AmazonDynamoDBClient client = new AmazonDynamoDBClient(CREDENTIALS); public static void doRead(Str

与AWS Java SDK同时使用同一客户机对象处理多个请求是否安全。例如,如果我有一个web服务器同时处理多个请求,并且一个或多个请求需要访问DynamoDB,那么使用静态访问器方法(例如

public class DynamoDBManager {

    private static AmazonDynamoDBClient client = new AmazonDynamoDBClient(CREDENTIALS);

    public static void doRead(String hashKey) {
        // use the client to read
    }

    public static void doWrite(MyData data) {
        // use the client to write
    }
}
…或者我应该删除方法和客户机对象上的静态修饰符,以便每次web服务器请求需要访问数据库时,它都必须实例化manager类以获取其自己的客户机版本


如果客户端对象是静态的,是否会出现任何并发问题或冲突?这里我以DynamoDB为例,但我对S3客户端的相同场景同样感兴趣。

AWS SDK for Java中的所有客户端都是线程安全的,您应该重用客户端对象。

开发人员非常需要这些信息。您能否将此信息添加到JavaDoc API文档中(例如,仅添加@ThreadSafe)?我已经提交了一个问题,订阅通知: