- All Implemented Interfaces:
Serializable,Comparable<SynchronizationStrategy>,Constable
- Since:
- 1.3
-
Nested Class Summary
Nested classes/interfaces inherited from class java.lang.Enum
Enum.EnumDesc<E extends Enum<E>> -
Enum Constant Summary
Enum ConstantsEnum ConstantDescriptionLock-free algorithm based on CAS(compare and swap) of immutable objects.This is fake strategy which does not perform synchronization at all.Blocking strategy based on javasynchronizedkeyword. -
Method Summary
Modifier and TypeMethodDescriptionstatic SynchronizationStrategyReturns the enum constant of this class with the specified name.static SynchronizationStrategy[]values()Returns an array containing the constants of this enum class, in the order they are declared.
-
Enum Constant Details
-
LOCK_FREE
Lock-free algorithm based on CAS(compare and swap) of immutable objects.Advantages: This strategy is tolerant to high contention usage scenario, threads do not block each other.
Disadvantages: The sequence "read-clone-update-save" needs to allocate one object per each invocation of consumption method.
Usage recommendations: when you are not sure what kind of strategy is better for you.The
LocalBucketBuilder.build()without parameters uses this strategy. -
SYNCHRONIZED
Blocking strategy based on javasynchronizedkeyword.Advantages: Never allocates memory.
Disadvantages: Thread which acquired the lock(and superseded from CPU by OS scheduler) can block another threads for significant time.
Usage recommendations: when your primary goal is avoiding of memory allocation, and you do not care about contention. -
NONE
This is fake strategy which does not perform synchronization at all. It is usable when there are no multithreading access to same bucket, or synchronization already provided by third-party library or yourself.Advantages: Never allocates memory and never acquires any locks, in other words you pay nothing for synchronization.
Disadvantages: If your code or third-party library code has errors then bucket state will be corrupted.
Usage recommendations: iff you have guarantees that bucket will never be used from multiple threads, for example in cases where your third-party library(like akka or rx-java) prevents concurrent access and provide guarantees of visibility, or when you are so senior guy that can manage synchronization by yourself.
-
-
Method Details
-
values
Returns an array containing the constants of this enum class, in the order they are declared.- Returns:
- an array containing the constants of this enum class, in the order they are declared
-
valueOf
Returns the enum constant of this class with the specified name. The string must match exactly an identifier used to declare an enum constant in this class. (Extraneous whitespace characters are not permitted.)- Parameters:
name- the name of the enum constant to be returned.- Returns:
- the enum constant with the specified name
- Throws:
IllegalArgumentException- if this enum class has no constant with the specified nameNullPointerException- if the argument is null
-