Grabbing System.nanoTime() uses a non-trivial amount of resources.
Using one shared start time for all threads.