Skip to content

Commit 63da8b1

Browse files
committed
Back to a field updater.
1 parent 51113b7 commit 63da8b1

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

src/main/java/rx/schedulers/TrampolineScheduler.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,13 @@ public Worker createWorker() {
4545
/* package accessible for unit tests */TrampolineScheduler() {
4646
}
4747

48-
private class InnerCurrentThreadScheduler extends Scheduler.Worker implements Subscription {
48+
private static class InnerCurrentThreadScheduler extends Scheduler.Worker implements Subscription {
4949

50+
private static final AtomicIntegerFieldUpdater COUNTER_UPDATER = AtomicIntegerFieldUpdater.newUpdater(InnerCurrentThreadScheduler.class, "counter");
51+
volatile int counter;
5052
private final PriorityBlockingQueue<TimedAction> queue = new PriorityBlockingQueue<TimedAction>();
5153
private final BooleanSubscription innerSubscription = new BooleanSubscription();
5254
private final AtomicInteger wip = new AtomicInteger();
53-
private final AtomicInteger counter = new AtomicInteger();
5455

5556
@Override
5657
public Subscription schedule(Action0 action) {
@@ -68,7 +69,7 @@ private Subscription enqueue(Action0 action, long execTime) {
6869
if (innerSubscription.isUnsubscribed()) {
6970
return Subscriptions.unsubscribed();
7071
}
71-
final TimedAction timedAction = new TimedAction(action, execTime, counter.incrementAndGet());
72+
final TimedAction timedAction = new TimedAction(action, execTime, COUNTER_UPDATER.incrementAndGet(this));
7273
queue.add(timedAction);
7374

7475
if (wip.getAndIncrement() == 0) {

0 commit comments

Comments
 (0)