Skip to content

Commit 6c115a4

Browse files
davidmotenakarnokd
authored andcommitted
use a mutable field in FlowableTimeoutTimed instead of an AtomicReference (#5466)
1 parent 08be741 commit 6c115a4

File tree

1 file changed

+9
-20
lines changed

1 file changed

+9
-20
lines changed

src/main/java/io/reactivex/internal/operators/flowable/FlowableTimeoutTimed.java

Lines changed: 9 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ static final class TimeoutTimedOtherSubscriber<T> implements FlowableSubscriber<
6868

6969
final FullArbiter<T> arbiter;
7070

71-
final AtomicReference<Disposable> timer = new AtomicReference<Disposable>();
71+
Disposable timer;
7272

7373
volatile long index;
7474

@@ -110,16 +110,11 @@ public void onNext(T t) {
110110
}
111111

112112
void scheduleTimeout(final long idx) {
113-
Disposable d = timer.get();
114-
if (d != null) {
115-
d.dispose();
113+
if (timer != null) {
114+
timer.dispose();
116115
}
117116

118-
if (timer.compareAndSet(d, NEW_TIMER)) {
119-
d = worker.schedule(new TimeoutTask(idx), timeout, unit);
120-
121-
DisposableHelper.replace(timer, d);
122-
}
117+
timer = worker.schedule(new TimeoutTask(idx), timeout, unit);
123118
}
124119

125120
void subscribeNext() {
@@ -170,11 +165,10 @@ public void run() {
170165
if (idx == index) {
171166
done = true;
172167
s.cancel();
173-
DisposableHelper.dispose(timer);
168+
worker.dispose();
174169

175170
subscribeNext();
176171

177-
worker.dispose();
178172
}
179173
}
180174
}
@@ -188,7 +182,7 @@ static final class TimeoutTimedSubscriber<T> implements FlowableSubscriber<T>, D
188182

189183
Subscription s;
190184

191-
final AtomicReference<Disposable> timer = new AtomicReference<Disposable>();
185+
Disposable timer;
192186

193187
volatile long index;
194188

@@ -224,16 +218,11 @@ public void onNext(T t) {
224218
}
225219

226220
void scheduleTimeout(final long idx) {
227-
Disposable d = timer.get();
228-
if (d != null) {
229-
d.dispose();
221+
if (timer != null) {
222+
timer.dispose();
230223
}
231224

232-
if (timer.compareAndSet(d, NEW_TIMER)) {
233-
d = worker.schedule(new TimeoutTask(idx), timeout, unit);
234-
235-
DisposableHelper.replace(timer, d);
236-
}
225+
timer = worker.schedule(new TimeoutTask(idx), timeout, unit);
237226
}
238227

239228
@Override

0 commit comments

Comments
 (0)