24
24
import java .util .Iterator ;
25
25
import java .util .concurrent .*;
26
26
import java .util .concurrent .atomic .AtomicBoolean ;
27
- import java .util .concurrent .atomic .AtomicInteger ;
28
27
29
28
/* package */ class CachedThreadScheduler extends Scheduler {
30
- private static final class CachedWorkerPool {
31
- final ThreadFactory factory = new ThreadFactory () {
32
- final AtomicInteger counter = new AtomicInteger ();
33
-
34
- @ Override
35
- public Thread newThread (Runnable r ) {
36
- Thread t = new Thread (r , "RxCachedThreadScheduler-" + counter .incrementAndGet ());
37
- t .setDaemon (true );
38
- return t ;
39
- }
40
- };
29
+ private static final String WORKER_THREAD_NAME_PREFIX = "RxCachedThreadScheduler-" ;
30
+ private static final NewThreadScheduler .RxThreadFactory WORKER_THREAD_FACTORY =
31
+ new NewThreadScheduler .RxThreadFactory (WORKER_THREAD_NAME_PREFIX );
32
+
33
+ private static final String EVICTOR_THREAD_NAME_PREFIX = "RxCachedWorkerPoolEvictor-" ;
34
+ private static final NewThreadScheduler .RxThreadFactory EVICTOR_THREAD_FACTORY =
35
+ new NewThreadScheduler .RxThreadFactory (EVICTOR_THREAD_NAME_PREFIX );
41
36
37
+ private static final class CachedWorkerPool {
42
38
private final long keepAliveTime ;
43
39
private final ConcurrentLinkedQueue <PoolWorker > expiringQueue ;
44
40
private final ScheduledExecutorService evictExpiredWorkerExecutor ;
@@ -47,16 +43,7 @@ public Thread newThread(Runnable r) {
47
43
this .keepAliveTime = unit .toNanos (keepAliveTime );
48
44
this .expiringQueue = new ConcurrentLinkedQueue <PoolWorker >();
49
45
50
- evictExpiredWorkerExecutor = Executors .newScheduledThreadPool (1 , new ThreadFactory () {
51
- final AtomicInteger counter = new AtomicInteger ();
52
-
53
- @ Override
54
- public Thread newThread (Runnable r ) {
55
- Thread t = new Thread (r , "RxCachedWorkerPoolEvictor-" + counter .incrementAndGet ());
56
- t .setDaemon (true );
57
- return t ;
58
- }
59
- });
46
+ evictExpiredWorkerExecutor = Executors .newScheduledThreadPool (1 , EVICTOR_THREAD_FACTORY );
60
47
evictExpiredWorkerExecutor .scheduleWithFixedDelay (
61
48
new Runnable () {
62
49
@ Override
@@ -80,7 +67,7 @@ PoolWorker get() {
80
67
}
81
68
82
69
// No cached worker found, so create a new one.
83
- return new PoolWorker (factory );
70
+ return new PoolWorker (WORKER_THREAD_FACTORY );
84
71
}
85
72
86
73
void release (PoolWorker poolWorker ) {
0 commit comments