CAMEL-6941: Fixed concurrency issue when shutdown on default executor service manager.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/69ccc76b Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/69ccc76b Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/69ccc76b Branch: refs/heads/camel-2.11.x Commit: 69ccc76bf412dd4118b2f03b3972878b6eb0f6c6 Parents: 31fddb7 Author: Claus Ibsen <davscl...@apache.org> Authored: Fri Nov 8 15:50:52 2013 +0100 Committer: Claus Ibsen <davscl...@apache.org> Committed: Fri Nov 8 15:52:56 2013 +0100 ---------------------------------------------------------------------- .../org/apache/camel/impl/DefaultExecutorServiceManager.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/69ccc76b/camel-core/src/main/java/org/apache/camel/impl/DefaultExecutorServiceManager.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultExecutorServiceManager.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultExecutorServiceManager.java index d8bd891..08d6bc2 100644 --- a/camel-core/src/main/java/org/apache/camel/impl/DefaultExecutorServiceManager.java +++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultExecutorServiceManager.java @@ -16,13 +16,13 @@ */ package org.apache.camel.impl; -import java.util.ArrayList; -import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.ExecutorService; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ThreadFactory; @@ -59,11 +59,11 @@ public class DefaultExecutorServiceManager extends ServiceSupport implements Exe private final CamelContext camelContext; private ThreadPoolFactory threadPoolFactory = new DefaultThreadPoolFactory(); - private final List<ExecutorService> executorServices = new ArrayList<ExecutorService>(); + private final List<ExecutorService> executorServices = new CopyOnWriteArrayList<ExecutorService>(); private String threadNamePattern; private long shutdownAwaitTermination = 10000; private String defaultThreadPoolProfileId = "defaultThreadPoolProfile"; - private final Map<String, ThreadPoolProfile> threadPoolProfiles = new HashMap<String, ThreadPoolProfile>(); + private final Map<String, ThreadPoolProfile> threadPoolProfiles = new ConcurrentHashMap<String, ThreadPoolProfile>(); private ThreadPoolProfile defaultProfile; public DefaultExecutorServiceManager(CamelContext camelContext) {