浏览代码

#956 使用ConcurrentHashMap替换HashTable

liaochuntao 6 年之前
父节点
当前提交
5d7f69a984

+ 2 - 1
weixin-java-common/src/main/java/me/chanjar/weixin/common/util/res/StringManager.java

@@ -19,6 +19,7 @@ package me.chanjar.weixin.common.util.res;
 
 import java.text.MessageFormat;
 import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
 
 /**
  * An internationalization / localization helper class which reduces
@@ -46,7 +47,7 @@ import java.util.*;
  */
 public class StringManager {
 
-  private static final Map<String, Map<Locale, StringManager>> MANAGERS = new Hashtable<>();
+  private static final Map<String, Map<Locale, StringManager>> MANAGERS = new ConcurrentHashMap<>();
   private static int LOCALE_CACHE_SIZE = 10;
   /**
    * The ResourceBundle for this StringManager.

+ 2 - 2
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/util/json/WxMaVisitDistributionGsonAdapter.java

@@ -10,9 +10,9 @@ import com.google.gson.JsonParseException;
 import me.chanjar.weixin.common.util.json.GsonHelper;
 
 import java.lang.reflect.Type;
-import java.util.Hashtable;
 import java.util.LinkedHashMap;
 import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 
 /**
  * @author <a href="https://github.com/charmingoh">Charming</a>
@@ -36,7 +36,7 @@ public class WxMaVisitDistributionGsonAdapter implements JsonDeserializer<WxMaVi
     }
 
     JsonArray listArray = object.getAsJsonArray("list");
-    Map<String, Map<Integer, Integer>> list = new Hashtable<>(listArray.size());
+    Map<String, Map<Integer, Integer>> list = new ConcurrentHashMap<>(listArray.size());
     for (JsonElement indexElement : listArray) {
       JsonObject indexObject = indexElement.getAsJsonObject();
       String index = GsonHelper.getString(indexObject, "index");

+ 4 - 4
weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenComponentServiceImpl.java

@@ -27,18 +27,18 @@ import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.Hashtable;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 
 /**
  * @author <a href="https://github.com/007gzs">007</a>
  */
 public class WxOpenComponentServiceImpl implements WxOpenComponentService {
   private static final JsonParser JSON_PARSER = new JsonParser();
-  private static final Map<String, WxOpenMaService> WX_OPEN_MA_SERVICE_MAP = new Hashtable<>();
-  private static final Map<String, WxMpService> WX_OPEN_MP_SERVICE_MAP = new Hashtable<>();
-  private static final Map<String, WxOpenFastMaService> WX_OPEN_FAST_MA_SERVICE_MAP = new Hashtable<>();
+  private static final Map<String, WxOpenMaService> WX_OPEN_MA_SERVICE_MAP = new ConcurrentHashMap<>();
+  private static final Map<String, WxMpService> WX_OPEN_MP_SERVICE_MAP = new ConcurrentHashMap<>();
+  private static final Map<String, WxOpenFastMaService> WX_OPEN_FAST_MA_SERVICE_MAP = new ConcurrentHashMap<>();
 
   protected final Logger log = LoggerFactory.getLogger(this.getClass());
   private WxOpenService wxOpenService;

+ 5 - 5
weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenInMemoryConfigStorage.java

@@ -2,8 +2,8 @@ package me.chanjar.weixin.open.api.impl;
 
 
 import java.io.File;
-import java.util.Hashtable;
 import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
 
@@ -37,10 +37,10 @@ public class WxOpenInMemoryConfigStorage implements WxOpenConfigStorage {
   private String httpProxyPassword;
   private ApacheHttpClientBuilder apacheHttpClientBuilder;
 
-  private Map<String, Token> authorizerRefreshTokens = new Hashtable<>();
-  private Map<String, Token> authorizerAccessTokens = new Hashtable<>();
-  private Map<String, Token> jsapiTickets = new Hashtable<>();
-  private Map<String, Token> cardApiTickets = new Hashtable<>();
+  private Map<String, Token> authorizerRefreshTokens = new ConcurrentHashMap<>();
+  private Map<String, Token> authorizerAccessTokens = new ConcurrentHashMap<>();
+  private Map<String, Token> jsapiTickets = new ConcurrentHashMap<>();
+  private Map<String, Token> cardApiTickets = new ConcurrentHashMap<>();
 
   @Override
   public String getComponentAppId() {