44
55import java .net .URI ;
66import java .net .URISyntaxException ;
7- import java .util .ArrayList ;
8- import java .util .Arrays ;
9- import java .util .HashMap ;
10- import java .util .LinkedList ;
11- import java .util .List ;
12- import java .util .Map ;
13- import java .util .concurrent .Executors ;
14- import java .util .concurrent .Future ;
15- import java .util .concurrent .ScheduledExecutorService ;
16- import java .util .concurrent .TimeUnit ;
7+ import java .util .*;
8+ import java .util .concurrent .*;
9+ import java .util .concurrent .atomic .AtomicInteger ;
1710import java .util .logging .Level ;
1811import java .util .logging .Logger ;
1912
@@ -37,6 +30,8 @@ public class Socket extends Emitter {
3730
3831 private static final Logger logger = Logger .getLogger (Socket .class .getName ());
3932
33+ private static final AtomicInteger HEARTBEAT_THREAD_COUNTER = new AtomicInteger ();
34+
4035 private static final String PROBE_ERROR = "probe error" ;
4136
4237
@@ -848,11 +843,22 @@ public String id() {
848843
849844 private ScheduledExecutorService getHeartbeatScheduler () {
850845 if (this .heartbeatScheduler == null || this .heartbeatScheduler .isShutdown ()) {
851- this .heartbeatScheduler = Executors . newSingleThreadScheduledExecutor ();
846+ this .heartbeatScheduler = createHeartbeatScheduler ();
852847 }
853848 return this .heartbeatScheduler ;
854849 }
855850
851+ private ScheduledExecutorService createHeartbeatScheduler () {
852+ return Executors .newSingleThreadScheduledExecutor (new ThreadFactory () {
853+ @ Override
854+ public Thread newThread (Runnable r ) {
855+ Thread thread = new Thread (r , "engine.io-client.heartbeat-" + HEARTBEAT_THREAD_COUNTER .getAndIncrement ());
856+ thread .setDaemon (true );
857+ return thread ;
858+ }
859+ });
860+ }
861+
856862 public static class Options extends Transport .Options {
857863
858864 /**
0 commit comments