Fixes threadNum > physicalthreads question; the short answer is that the arraylist.remove operation works significantly better on smaller arrays, so having n small arrays is a lot faster than m big arrays.