You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2018/01/31 02:36:08 UTC

[incubator-servicecomb-java-chassis] 01/03: SCB-310 replace double check by computeIfAbsent

This is an automated email from the ASF dual-hosted git repository.

liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-java-chassis.git

commit f932eee312dfa8afe856df770acdd967a69557b7
Author: wujimin <wu...@huawei.com>
AuthorDate: Fri Jan 26 16:45:58 2018 +0800

    SCB-310 replace double check by computeIfAbsent
---
 .../servicecomb/foundation/vertx/VertxUtils.java   | 23 +++++++++-------------
 1 file changed, 9 insertions(+), 14 deletions(-)

diff --git a/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/VertxUtils.java b/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/VertxUtils.java
index 14fba7b..8a31563 100644
--- a/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/VertxUtils.java
+++ b/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/VertxUtils.java
@@ -21,12 +21,12 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.lang.management.ManagementFactory;
 import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CountDownLatch;
 
 import javax.xml.ws.Holder;
 
 import org.apache.commons.io.IOUtils;
+import org.apache.servicecomb.foundation.common.concurrent.ConcurrentHashMapEx;
 import org.apache.servicecomb.foundation.vertx.client.ClientPoolManager;
 import org.apache.servicecomb.foundation.vertx.client.ClientVerticle;
 import org.apache.servicecomb.foundation.vertx.stream.BufferInputStream;
@@ -61,11 +61,15 @@ public final class VertxUtils {
   private static final long BLOCKED_THREAD_CHECK_INTERVAL = Long.MAX_VALUE / 2;
 
   // key为vertx实例名称,以支撑vertx功能分组
-  private static Map<String, Vertx> vertxMap = new ConcurrentHashMap<>();
+  private static Map<String, VertxImplEx> vertxMap = new ConcurrentHashMapEx<>();
 
   private VertxUtils() {
   }
 
+  public static Map<String, VertxImplEx> getVertxMap() {
+    return vertxMap;
+  }
+
   public static <T extends AbstractVerticle> void deployVerticle(Vertx vertx, Class<T> cls, int instanceCount) {
     DeploymentOptions options = new DeploymentOptions().setInstances(instanceCount);
 
@@ -106,18 +110,9 @@ public final class VertxUtils {
   }
 
   public static Vertx getOrCreateVertxByName(String name, VertxOptions vertxOptions) {
-    Vertx vertx = getVertxByName(name);
-    if (vertx == null) {
-      synchronized (VertxUtils.class) {
-        vertx = getVertxByName(name);
-        if (vertx == null) {
-          vertx = init(name, vertxOptions);
-          vertxMap.put(name, vertx);
-        }
-      }
-    }
-
-    return vertx;
+    return vertxMap.computeIfAbsent(name, vertxName -> {
+      return (VertxImplEx) init(vertxName, vertxOptions);
+    });
   }
 
   public static Vertx init(VertxOptions vertxOptions) {

-- 
To stop receiving notification emails like this one, please contact
liubao@apache.org.