Remove synchronization points from random number generation. This mostly consisted switching from per-class instances of Random() that are shared amongst threads to thread-local instances shared across classes.
Also, CounterGenerator.nextInt() was synchronized. Changed it to use an AtomicInteger.
Finally, removed lastString() from Generator, as it was only called in places where lastInt() was more appropriate; switched the calls to lastInt().