Skip to content

Commit f223335

Browse files
authored
mark scheduler threads as daemon so they don't block JVM shutdown (#94)
1 parent 6da2081 commit f223335

File tree

3 files changed

+16
-2
lines changed

3 files changed

+16
-2
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.devcycle.sdk.server.local.managers;
2+
3+
import java.util.concurrent.ThreadFactory;
4+
import java.util.concurrent.Executors;
5+
6+
public class DaemonThreadFactory implements ThreadFactory {
7+
private ThreadFactory defaultThreadFactory = Executors.defaultThreadFactory();
8+
9+
public Thread newThread(Runnable r) {
10+
Thread thread = defaultThreadFactory.newThread(r);
11+
thread.setDaemon(true);
12+
return thread;
13+
}
14+
}

src/main/java/com/devcycle/sdk/server/local/managers/EnvironmentConfigManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
import java.util.concurrent.TimeUnit;
2222

2323
public final class EnvironmentConfigManager {
24-
private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
24+
private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1, new DaemonThreadFactory());
2525
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
2626
private static final int DEFAULT_POLL_INTERVAL_MS = 30000;
2727
private static final int MIN_INTERVALS_MS = 1000;

src/main/java/com/devcycle/sdk/server/local/managers/EventQueueManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public class EventQueueManager {
2424
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
2525
private IDVCApi eventsApiClient;
2626
private int eventFlushIntervalMS;
27-
private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
27+
private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1, new DaemonThreadFactory());
2828
private boolean isFlushingEvents = false;
2929
private int flushEventQueueSize;
3030
private int maxEventQueueSize;

0 commit comments

Comments
 (0)