diff --git a/src/main/java/org/apache/gossip/manager/ActiveGossipThread.java b/src/main/java/org/apache/gossip/manager/ActiveGossipThread.java index 28de244..064df59 100644 --- a/src/main/java/org/apache/gossip/manager/ActiveGossipThread.java +++ b/src/main/java/org/apache/gossip/manager/ActiveGossipThread.java @@ -60,7 +60,7 @@ public class ActiveGossipThread { this.gossipManager = gossipManager; random = new Random(); this.gossipCore = gossipCore; - this.scheduledExecutorService = Executors.newScheduledThreadPool(1024); + this.scheduledExecutorService = Executors.newScheduledThreadPool(2); } public void init() { diff --git a/src/main/java/org/apache/gossip/manager/GossipCore.java b/src/main/java/org/apache/gossip/manager/GossipCore.java index 6dc4a5c..367c47b 100644 --- a/src/main/java/org/apache/gossip/manager/GossipCore.java +++ b/src/main/java/org/apache/gossip/manager/GossipCore.java @@ -8,12 +8,16 @@ import java.net.URI; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.BlockingQueue; import java.util.concurrent.Callable; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.ThreadPoolExecutor.DiscardPolicy; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import org.apache.gossip.GossipMember; @@ -42,11 +46,14 @@ public class GossipCore { private ExecutorService service; private final ConcurrentHashMap> perNodeData; private final ConcurrentHashMap sharedData; + private final BlockingQueue workQueue; + public GossipCore(GossipManager manager){ this.gossipManager = manager; requests = new ConcurrentHashMap<>(); - service = Executors.newFixedThreadPool(500); + workQueue = new ArrayBlockingQueue<>(1024); + service = new ThreadPoolExecutor(1, 5, 1, TimeUnit.SECONDS, workQueue, new DiscardPolicy()); perNodeData = new ConcurrentHashMap<>(); sharedData = new ConcurrentHashMap<>(); }