From 67abd91f7222a4137fb6c05c217457b2d820275c Mon Sep 17 00:00:00 2001 From: Emmanuel Bigeon Date: Thu, 11 Oct 2018 12:10:39 -0400 Subject: [PATCH] Use concurrent hash map, where possible Signed-off-by: Emmanuel Bigeon --- .../main/java/net/bigeon/gclc/command/CommandParameters.java | 3 ++- .../net/bigeon/gclc/command/ParametrizedCommandData.java | 5 +++-- .../src/main/java/net/bigeon/gclc/utils/ReadingRunnable.java | 3 ++- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/gclc/src/main/java/net/bigeon/gclc/command/CommandParameters.java b/gclc/src/main/java/net/bigeon/gclc/command/CommandParameters.java index 04dead6..bb93c59 100644 --- a/gclc/src/main/java/net/bigeon/gclc/command/CommandParameters.java +++ b/gclc/src/main/java/net/bigeon/gclc/command/CommandParameters.java @@ -75,7 +75,8 @@ public final class CommandParameters { for (final String string : bools) { booleanArguments.put(string, Boolean.FALSE); } - stringArguments = new ConcurrentHashMap<>(strings.size()); + // Cannot use concurrent because of the null values. + stringArguments = new HashMap<>(strings.size()); for (final String string : strings) { stringArguments.put(string, null); } diff --git a/gclc/src/main/java/net/bigeon/gclc/command/ParametrizedCommandData.java b/gclc/src/main/java/net/bigeon/gclc/command/ParametrizedCommandData.java index 8cedf83..91f4f27 100644 --- a/gclc/src/main/java/net/bigeon/gclc/command/ParametrizedCommandData.java +++ b/gclc/src/main/java/net/bigeon/gclc/command/ParametrizedCommandData.java @@ -87,6 +87,7 @@ import net.bigeon.gclc.manager.ConsoleInput; import net.bigeon.gclc.manager.EmptyInput; import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; /** An object to handle standardized command parameters. * @@ -96,9 +97,9 @@ public final class ParametrizedCommandData { /** The boolean parameters mandatory status. */ private final Set boolParams = new HashSet<>(); /** The string parameters mandatory status. */ - private final Map stringParams = new HashMap<>(); + private final Map stringParams = new ConcurrentHashMap<>(); /** The parameters mandatory status. */ - private final Map params = new HashMap<>(); + private final Map params = new ConcurrentHashMap<>(); /** The restriction of provided parameters on execution to declared paramters in * the status maps. */ private final boolean strict; diff --git a/gclc/src/main/java/net/bigeon/gclc/utils/ReadingRunnable.java b/gclc/src/main/java/net/bigeon/gclc/utils/ReadingRunnable.java index c1f81d6..2bef78d 100644 --- a/gclc/src/main/java/net/bigeon/gclc/utils/ReadingRunnable.java +++ b/gclc/src/main/java/net/bigeon/gclc/utils/ReadingRunnable.java @@ -78,6 +78,7 @@ import java.util.ArrayDeque; import java.util.Deque; import java.util.HashMap; import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Level; import java.util.logging.Logger; @@ -165,7 +166,7 @@ public final class ReadingRunnable implements Runnable { /** The waiting status for a message. */ private boolean waiting; /** The blocker for a given message. */ - private final Map messageBlocker = new HashMap<>(); + private final Map messageBlocker = new ConcurrentHashMap<>(); /** The lock. */ private final Object messageBlockerLock = new Object(); /** The message being delivered. */