Use streams instead of threads in Java to use Java 8's prefered parallelism method

This has a few disadvantages that I was unable to work around while keeping the code small and concise, but it uses the stream's parallelism rather than setting something similar up with Threads (all of that is done behind the scenes). 

This also uses modular arithmetic, which means that when the Integer overflows, it will wrap around to the min value.