diff --git a/core-api/src/main/java/com/optimizely/ab/odp/ODPEventManager.java b/core-api/src/main/java/com/optimizely/ab/odp/ODPEventManager.java index 0ae441c44..ae034fd68 100644 --- a/core-api/src/main/java/com/optimizely/ab/odp/ODPEventManager.java +++ b/core-api/src/main/java/com/optimizely/ab/odp/ODPEventManager.java @@ -68,7 +68,13 @@ public void start() { eventDispatcherThread = new EventDispatcherThread(); } if (!isRunning) { - eventDispatcherThread.start(); + final ThreadFactory threadFactory = Executors.defaultThreadFactory(); + ExecutorService executor = Executors.newSingleThreadExecutor(runnable -> { + Thread thread = threadFactory.newThread(runnable); + thread.setDaemon(true); + return thread; + }); + executor.submit(eventDispatcherThread); } isRunning = true; } @@ -159,7 +165,7 @@ public void run() { if (currentBatch.size() > 0) { nextEvent = eventQueue.poll(nextFlushTime - new Date().getTime(), TimeUnit.MILLISECONDS); } else { - nextEvent = eventQueue.poll(); + nextEvent = eventQueue.take(); } if (nextEvent == null) {