4
4
5
5
import java .net .URI ;
6
6
import 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 ;
17
10
import java .util .logging .Level ;
18
11
import java .util .logging .Logger ;
19
12
@@ -37,6 +30,8 @@ public class Socket extends Emitter {
37
30
38
31
private static final Logger logger = Logger .getLogger (Socket .class .getName ());
39
32
33
+ private static final AtomicInteger HEARTBEAT_THREAD_COUNTER = new AtomicInteger ();
34
+
40
35
private static final String PROBE_ERROR = "probe error" ;
41
36
42
37
@@ -848,11 +843,22 @@ public String id() {
848
843
849
844
private ScheduledExecutorService getHeartbeatScheduler () {
850
845
if (this .heartbeatScheduler == null || this .heartbeatScheduler .isShutdown ()) {
851
- this .heartbeatScheduler = Executors . newSingleThreadScheduledExecutor ();
846
+ this .heartbeatScheduler = createHeartbeatScheduler ();
852
847
}
853
848
return this .heartbeatScheduler ;
854
849
}
855
850
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
+
856
862
public static class Options extends Transport .Options {
857
863
858
864
/**
0 commit comments