ICache test showing effect of batching on performance

there is a CAS loop inside Random. 
```
 protected int next(int bits) {
        long oldseed, nextseed;
        AtomicLong seed = this.seed;
        do {
            oldseed = seed.get();
            nextseed = (oldseed * multiplier + addend) & mask;
        } while (!seed.compareAndSet(oldseed, nextseed));
        return (int)(nextseed >>> (48 - bits));
    }
```

I doubt it could create any measurable contention. other operations are way more costly, feel free to prove otherwise :) 

anyway, it's not something I want to address in this PR.