小编Mar*_*k_H的帖子

Amazon S3是否有连接池?

我曾经使用过代码

public static AmazonS3Client s3 = null;
...
BasicAWSCredentials c = new BasicAWSCredentials("absadgwslkjlsdjgflwa");
s3 =  new AmazonS3Client(c);
Run Code Online (Sandbox Code Playgroud)

只有一个实例s3被创建,而数十个线程将通过s3.putObject()上传图像.在转储信息中,我可以看到一个线程将锁定唯一的实例s3而其他人正在等待.

所以我想如果我使用下面的代码可能会更快:

BasicAWSCredentials c = new BasicAWSCredentials("absadgwslkjlsdjgflwa");
for(int i = 0; i < 10; i++)
    amazonS3[i] = new AmazonS3Client(c);
Run Code Online (Sandbox Code Playgroud)

每次系统将获得随机的s3实例,然后上传图像.

private static AmazonS3 getS3(){
    int i = (int)(Math.random() * 10); 
    return amazonS3[i];
}
Run Code Online (Sandbox Code Playgroud)

但似乎系统变慢了.为什么会这样?也许唯一的实例s3已经使用了连接池?我很迷惑.

java amazon-s3 amazon-web-services

18
推荐指数
1
解决办法
2万
查看次数

玩框架2,如何在Java中使用执行上下文?

官方文档仅描述了如何在scala中使用它.http://www.playframework.com/documentation/2.1.0/ThreadPools.

Future {
  // Some blocking or expensive code here
}(Contexts.myExecutionContext)
Run Code Online (Sandbox Code Playgroud)

我可以得到excutionContext,如:

ExecutionContext myExecutionContext = Akka.system().dispatchers().lookup("my-context");
Run Code Online (Sandbox Code Playgroud)

但是如何在代码中加入呢?

return async(
    future(new Callable<String>() {
        public String call() {
              return doSth();
        }).map(new F.Function<String,Result>() {
           public Result apply(String i) {
              return ok(i);
           }
        })  
Run Code Online (Sandbox Code Playgroud)

java playframework playframework-2.1

4
推荐指数
1
解决办法
2400
查看次数