On 01/15/2013 06:33 PM, Peter Levart wrote: > One more thing, not related to serialization: > > If a TLR reference is somehow passed from the thread that obtained it > via TLR.current() to some other thread that did never call TLR.current() > and this other thread calls methods on such instance (nextInt(), ...), > it will start the random sequence from the zero seed, bypassing > localInit() call... > > Is this ok?
I think this counts as "accidental" sharing, and Javadoc recommends to always do TLR.current().* to take the appropriate TLR; hence I think this is the adopted failure scenario. The upside for *not* fixing this is skipping the initialized checks from each of next*() methods, which are needed in corner cases only, thus saving the hot-path performance. -Aleksey.