--- CircuitBreaker/src/dk/thoerup/curcuitbreaker/CircuitBreakerManager.java 2009/10/07 04:29:07 407 +++ miscJava/CircuitBreaker/src/main/java/dk/thoerup/circuitbreaker/CircuitBreakerManager.java 2015/06/09 09:28:14 2572 @@ -1,22 +1,25 @@ -package dk.thoerup.curcuitbreaker; +package dk.thoerup.circuitbreaker; -import java.util.HashMap; import java.util.Map; +import java.util.Map.Entry; import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; public class CircuitBreakerManager { private static CircuitBreakerManager manager = null; - private Map breakers = new HashMap(); + private Map breakers = new ConcurrentHashMap(); private CircuitBreakerManager() { } public static CircuitBreakerManager getManager() { //singleton interface - if (manager == null) { - manager = new CircuitBreakerManager(); + synchronized(CircuitBreakerManager.class) { + if (manager == null) { + manager = new CircuitBreakerManager(); + } } return manager; } @@ -28,10 +31,21 @@ public CircuitBreaker getCircuitBreaker(String name) { return breakers.get(name); } + + public void removeCircuitBreaker(String name) { + breakers.remove(name); + } public void addCircuitBreaker(CircuitBreaker cb) { breakers.put(cb.getName(), cb); } + public void shutdown() { + + for ( Entry entry : breakers.entrySet() ) { + entry.getValue().shutdown(); + } + breakers.clear(); + } }