ThreadLocal<SplittableRandom> may be used to avoid locks and retain determinism in tests.
On Fri, 23 Aug 2019, 00:49 Jon Malkin, <[email protected]> wrote: > We got a PR to change reservoir sampling from using java.util.Random to > java.util.ThreadLocalRandom, saying it sped up a multithreaded app > significantly. In a scenario with multiple threads writing to independent > reservoirs, ThreadLocalRandom really should avoid a lot of locks, so that's > fine. > > The only drawback I see is that it makes deterministic, reproducible > testing impossible since you can't set the seed for ThreadLocalRanom. > That's ultimately a good thing -- it'd be a terrible design to have > separate reservoirs initialized with the same seed! And our tests already > don't pick a seed. > > I'm inclined to approve the PR, and even to go farther and recommend that > we (eventually) move to TLRandom more generally. But I first wanted to see > if there's some unknown drawback of which I am not currently aware? > > jon >
