File tree Expand file tree Collapse file tree 1 file changed +5
-3
lines changed
rxjava-core/src/main/java/rx/schedulers Expand file tree Collapse file tree 1 file changed +5
-3
lines changed Original file line number Diff line number Diff line change 23
23
24
24
import java .util .Iterator ;
25
25
import java .util .concurrent .*;
26
- import java .util .concurrent .atomic .AtomicBoolean ;
26
+ import java .util .concurrent .atomic .AtomicIntegerFieldUpdater ;
27
27
28
28
/* package */ class CachedThreadScheduler extends Scheduler {
29
29
private static final String WORKER_THREAD_NAME_PREFIX = "RxCachedThreadScheduler-" ;
@@ -109,15 +109,17 @@ public Worker createWorker() {
109
109
private static class EventLoopWorker extends Scheduler .Worker {
110
110
private final CompositeSubscription innerSubscription = new CompositeSubscription ();
111
111
private final PoolWorker poolWorker ;
112
- private final AtomicBoolean releasePoolWorkerOnce = new AtomicBoolean (false );
112
+ volatile int once ;
113
+ static final AtomicIntegerFieldUpdater <EventLoopWorker > ONCE_UPDATER
114
+ = AtomicIntegerFieldUpdater .newUpdater (EventLoopWorker .class , "once" );
113
115
114
116
EventLoopWorker (PoolWorker poolWorker ) {
115
117
this .poolWorker = poolWorker ;
116
118
}
117
119
118
120
@ Override
119
121
public void unsubscribe () {
120
- if (releasePoolWorkerOnce .compareAndSet (false , true )) {
122
+ if (ONCE_UPDATER .compareAndSet (this , 0 , 1 )) {
121
123
// unsubscribe should be idempotent, so only do this once
122
124
CachedWorkerPool .INSTANCE .release (poolWorker );
123
125
}
You can’t perform that action at this time.
0 commit comments