@ParametersAreNonnullByDefault
Package io.github.pr0methean.betterrandom.prng.adapter
Implementations of
BaseRandom that are backed by
instances of SplittableRandom or Random, many of them wrapped
in ThreadLocal<?> to allow concurrent use of a shared instance by
multiple threads. The latter is not in general reproducible, since threads start in a
nondeterministic order and do not have a serializable identity.
BaseRandom.setSeed(byte[]) may affect only the
calling thread.-
Class Summary Class Description BaseSplittableRandomAdapter Abstract class for implementations ofBaseRandomthat wrap one or moreSplittableRandominstances.EntropyBlockingRandomWrapper<T extends Random> ARandomWrapperwith the additional property that it won't return any output that would take its entropy below a minimum amount, and will instead either wait to be reseeded by aRandomSeederor, if none is installed, reseed itself on the calling thread with aSeedGenerator.EntropyBlockingSplittableRandomAdapter ASplittableRandomAdapterthat blocks waiting to be reseeded if its entropy drops too low.RandomWrapper<T extends Random> ReseedingThreadLocalRandomWrapper<T extends BaseRandom> AThreadLocalRandomWrapperthat reseeds all its instances using aRandomSeeder.SingleThreadSplittableRandomAdapter Simple, non-thread-safe implementation ofBaseRandomthat wraps aSplittableRandom.SplittableRandomAdapter Thread-safe PRNG that wraps aThreadLocal<SplittableRandom>.ThreadLocalRandomWrapper<T extends BaseRandom> Wraps aThreadLocal<BaseRandom> in order to provide concurrency that most implementations ofBaseRandomcan't implement naturally.