Class StripedCounters<T>
- java.lang.Object
-
- org.infinispan.commons.util.concurrent.StripedCounters<T>
-
public class StripedCounters<T> extends java.lang.ObjectDuplicates a set of counters in a set of stripes, so that multiple threads can increment those counters without too much contention.Callers must first obtain a stripe for the current thread with
stripeForCurrentThread(), then useincrement(AtomicLongFieldUpdater, Object)oradd(AtomicLongFieldUpdater, Object, long)to update one or more counters in that stripe. They must also provide aAtomicLongFieldUpdaterto access a specific counter in the stripe - it should be defined asstatic finalso that it can be inlined by the JIT.- Since:
- 9.0
- Author:
- Dan Berindei
-
-
Constructor Summary
Constructors Constructor Description StripedCounters(java.util.function.Supplier<T> stripeSupplier)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidadd(java.util.concurrent.atomic.AtomicLongFieldUpdater<T> updater, T stripe, long delta)longget(java.util.concurrent.atomic.AtomicLongFieldUpdater<T> updater)voidincrement(java.util.concurrent.atomic.AtomicLongFieldUpdater<T> updater, T stripe)voidreset(java.util.concurrent.atomic.AtomicLongFieldUpdater<T> updater)TstripeForCurrentThread()
-
-
-
Constructor Detail
-
StripedCounters
public StripedCounters(java.util.function.Supplier<T> stripeSupplier)
-
-
Method Detail
-
increment
public void increment(java.util.concurrent.atomic.AtomicLongFieldUpdater<T> updater, T stripe)
-
add
public void add(java.util.concurrent.atomic.AtomicLongFieldUpdater<T> updater, T stripe, long delta)
-
get
public long get(java.util.concurrent.atomic.AtomicLongFieldUpdater<T> updater)
-
reset
public void reset(java.util.concurrent.atomic.AtomicLongFieldUpdater<T> updater)
-
stripeForCurrentThread
public T stripeForCurrentThread()
-
-