public class StripedCounters<T>
extends java.lang.Object
Callers must first obtain a stripe for the current thread with stripeForCurrentThread(), then use increment(AtomicLongFieldUpdater, Object) or add(AtomicLongFieldUpdater, Object, long) to update one or
more counters in that stripe. They must also provide a AtomicLongFieldUpdater to access a specific counter in
the stripe - it should be defined as static final so that it can be inlined by the JIT.
| Constructor and Description |
|---|
StripedCounters(java.util.function.Supplier<T> stripeSupplier) |
| Modifier and Type | Method and Description |
|---|---|
void |
add(java.util.concurrent.atomic.AtomicLongFieldUpdater<T> updater,
T stripe,
long delta) |
long |
get(java.util.concurrent.atomic.AtomicLongFieldUpdater<T> updater) |
void |
increment(java.util.concurrent.atomic.AtomicLongFieldUpdater<T> updater,
T stripe) |
void |
reset(java.util.concurrent.atomic.AtomicLongFieldUpdater<T> updater) |
T |
stripeForCurrentThread() |
public StripedCounters(java.util.function.Supplier<T> stripeSupplier)
public void increment(java.util.concurrent.atomic.AtomicLongFieldUpdater<T> updater, T stripe)
public void add(java.util.concurrent.atomic.AtomicLongFieldUpdater<T> updater, T stripe, long delta)
public long get(java.util.concurrent.atomic.AtomicLongFieldUpdater<T> updater)
public void reset(java.util.concurrent.atomic.AtomicLongFieldUpdater<T> updater)
public T stripeForCurrentThread()